É possívelapenassincronizar novamente os nomes dos arquivos? Eu tenho uma caixa de armazenamento e quero que os nomes dos arquivos (e seus caminhos) sejam adicionados a outra caixa. Atualmente estou criando cada arquivo com touch
(eles serão criados com tamanho de 0 byte). Demora muito e queria saber se isso poderia ser automatizado com o rsync
.
Caso contrário, existe alguma outra ferramenta que permita isso? Ou eu precisaria codificar algo personalizado?
Responder1
Se o seu objetivo é criar arquivos empy, um modelo pode ser criado assim:
#!/bin/bash
FILES=$1 # original structure
TMPL=$2 # where to create empty files
[[ -d $FILES ]] || exit 1
[[ -d $TMPL ]] || mkdir -p $TMPL || exit 1
cd $TMPL
find "$FILES" -type d -printf "$TMPL%p\0" | sort -z |xargs -0 -L 1000 mkdir -p
find "$FILES" -type f -printf "$TMPL%p\0" | xargs -0 -L 1000 touch
Isso cria o diretório de cada arquivo da árvore original e toca nos arquivos nas pastas criadas em TMPL.
Depois de criar uma pasta "espelhada" apenas com arquivos vazios, ela pode ser sincronizada novamente com qualquer host, como qualquer outra pasta:
rsync -av -e 'ssh -p 22 -l username' \
/template/structure remotehost:/backup/templates/
A opção -e é opcional se o nome de usuário for o mesmo em ambos os hosts e se o sshd for executado na porta padrão. Preste atenção ao que acontece quando você especifica uma barra final em ambas ou em uma das partes de e para. É significativo. O parâmetro remotehost pode ser um endereço IP em vez de um alias.
Responder2
rsync
em si não parece ter a opção de apenas criar arquivos. No entanto, você pode tentar várias maneiras em vez de usar o toque manualmente:
- rsync a árvore de diretórios e execute
find
na raiz dessa árvore eecho "" >
em cada arquivo - use
find
para obter uma lista de árvores de diretórios e, em seguida, usemkdir -p
em cada elemento dessa lista (possivelmente classificação reversa antecipadamente para minimizar o número de syscalls) e, em seguida, usetouch
em uma lista de arquivos criada de forma semelhante.
No entanto, eu escolheria a primeira opção se o espaço estiver disponível, pois preserva as permissões e os direitos de acesso (dados os argumentos apropriados para rsync
).