Criador de Hard Link em massa
Publicado por Lemuel Roberto (última atualização em 23/02/2012)
[ Hits: 6.237 ]
Homepage: https://blog.lemuelroberto.online/
Download Mass-Hard-Link-Creator.tar.gz
Download 1329864294.Mass-Hard-Link-Creator.tar.gz (versão 2)
Este script, que está pronto para ser usado como um Nautilus Script, cria Hard Link para os arquivos selecionados no Nautilus ou mesmo pela linha linda de comando.
Para instalar o script basta copiar o arquivo para ~/.gnome2/nautilus-scripts e dar permissão de execução ou executar o arquivo 'install' que acompanha o arquivo compactado.
Eu uso Hard Links para, por exemplo, manter um arquivo no diretório de torrent, semeando, e ao mesmo tempo no meu diretório de filmes e em um diretório público, sem a necessidade de duplicar o arquivo.
Voce pode encontrar mais informações sobre Hard Links aqui: http://brunotorres.net/links
Qualquer dúvida, problema ou bug, é só postar aqui.
Versão 2 - Enviado por Lemuel Roberto em 21/02/2012
Changelog: Atualiza o arquivo 'install' que está com problemas.
Download 1329864294.Mass-Hard-Link-Creator.tar.gz
#!/bin/bash
#####################################################################
# #
# Informações #
# #
#-- [ Ficha ] ------------------------------------------------------#
# #
# Arquivo: Mass Hard Link Creator #
# Codificação: utf8 #
# Data: 17/01/2012 #
# Dependência: zenity #
# Autor: Lemuel Roberto <lemuelroberto@gmail.com> #
# Under the GNU GPL (v3.0 or later) #
# #
#-- [ Descrição ] --------------------------------------------------#
# #
# Este script cria Hard Links em massa a partir da seleção de #
# arquivos pelo zenity, ou mesmo por arquivos passados como #
# parâmetros na linha de comando. #
# Se algum diretório for selecionado, o script criará Hard Links #
# dos arquivos internos ao diretório recursivamente e serão criados #
# diretórios com a mesma árvore de diretórios dos alvos, no #
# diretório destino. #
# #
# OBS: Este script NÃO cria hard links para diretórios, apenas #
# para arquivos normais. #
# #
#-- [ Instalação ] -------------------------------------------------#
# #
# Para instalar, basta executar o arquivo 'install' que #
# acompanha este script ou copiar este arquivo para #
# ~/.gnome2/nautilus-scripts e dar permissão de execução para ele. #
# Ao instalar o script, quando voce clicar com o botão direito #
# dentro do Naultilus, aparecerá um menu Scripts. #
# #
#-- [ Configuração ] -----------------------------------------------#
# #
# Substitua a variável $DIR_DESTINO_PADRAO (linha 58) pelo #
# diretório de sua preferência, isso poderá facilitar a escolha do #
# destino dos links. #
# #
#-- [ Uso ] --------------------------------------------------------#
# #
# Selecione diretórios e/ou arquivos, clique com botão direito e #
# selecione 'Mass Hard Link Creator'. #
# #
#####################################################################
#####################################################################
# #
# Variáveis que serão usadas pelas janelas. #
# #
#####################################################################
# Para alterar o destino padrão, basta trocar '$HOME'
# pelo caminho desejado.
DIR_DESTINO_PADRAO="$HOME"
TITULO="Mass Hard Link Creator"
#####################################################################
# #
# Abre uma janela para seleção do diretório de destino dos #
# hard links que serão criados e retorna o diretório selecionado. #
# #
#####################################################################
get_destino() {
zenity --title="$TITULO" \
--info \
--no-wrap \
--text="Selecione o diretório destino.\n"
DESTINO=$( zenity \
--title="$TITULO - Selecione o diretório destino" \
--file-selection \
--filename="$DIR_DESTINO_PADRAO" \
--directory )
# Retorna o destino escolhido.
echo "${DESTINO}"
}
#####################################################################
# #
# Cria hard link para todo arquivo comum que estiver dentro do #
# diretório atual. #
# #
# $1 - destino do hard link. #
# #
#####################################################################
cria_hl() {
for FILE in * ; do
if [ -f "${FILE}" ]; then
ln --target-directory="${1}" "${FILE}"
fi
done
}
#####################################################################
# #
# Navega recursivamente pelo diretório passado no parâmetro $2. #
# #
# $1 - Destino dos Hard Links. #
# $2 - Nome do diretório atual. #
# #
#####################################################################
navega () {
# Cria um subdiretório semelhante ao que é no original.
mkdir -p "${1}"/"${2}"
# Cria hard link no subdiretório criado.
cria_hl "${1}"/"${2}"
for FILE in * ; do
if [ -d "${FILE}" ]; then
# Entra no diretório.
cd "${FILE}"
# Chamada recursiva.
navega "${1}" "${2}"/"${FILE}"
# Retorna ao diretório pai.
cd ..
fi
done
}
#####################################################################
# #
# Função principal. #
# #
#####################################################################
main() {
declare -a SIMPLEFILES
declare -a DIRECTORIES
IX=-1
IY=-1
for FILE in "$@" ; do
if [ -f "${FILE}" ]; then
IX=$[ ${IX} + 1 ]
SIMPLEFILES[${IX}]="${FILE}"
fi
if [ -d "${FILE}" ]; then
IY=$[ ${IY} + 1 ]
DIRECTORIES[${IY}]="${FILE}"
fi
done
# Encerra o script se nenhum arquivo válido foi selecionado.
if [ 0 -eq ${#SIMPLEFILES} -a 0 -eq ${#DIRECTORIES} ]; then
zenity --title="$TITULO" \
--error \
--no-wrap \
--text="Nenhum arquivo comum ou diretório foi selecionado.\n"
exit 0
fi
DEST=$(get_destino)
# Encerra o script se o destino selecionado não for válido.
if [ "$DEST" == "" ]; then
zenity --title="$TITULO" \
--error \
--no-wrap \
--text="O destino selecionado não é válido.\n"
exit 0
fi
if [ 0 -ne ${#SIMPLEFILES} ]; then
for FILE in "${SIMPLEFILES[@]}"; do
ln --target-directory="${DEST}" "${FILE}"
done
fi
if [ 0 -ne ${#DIRECTORIES} ]; then
for FILE in "${DIRECTORIES[@]}"; do
cd "${FILE}"
navega "$DEST" "${FILE}"
cd ..
done
fi
exit 0
}
main "$@"
Script simple backup em Fita DAT
Script em Dialog pesquisa nome do banco no mysql
Lista de Selecao de arquivos no Dialog
Teste do /admin/scripts Alteração
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (0)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









