apenas nomes de arquivos rsync

apenas nomes de arquivos rsync

É 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

rsyncem 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 findna raiz dessa árvore e echo "" >em cada arquivo
  • use findpara obter uma lista de árvores de diretórios e, em seguida, use mkdir -pem cada elemento dessa lista (possivelmente classificação reversa antecipadamente para minimizar o número de syscalls) e, em seguida, use touchem 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).

informação relacionada