Existe uma maneira de colocar comentários em um arquivo rsync --files-from?

10

Eu tenho um arquivo que o rsync usa como --files-from:

dir1
dir2
dir3

Quero poder colocar comentários acima de cada entrada de diretório assim:

# my dir1 comment
dir1

#dir2 comment
dir2

#yet another comment
dir3

mas o rsync reclama "Não existe esse arquivo ou diretório"

Até agora eu tentei #, //, - ,, ESPAÇO

Existe uma maneira de comentar / desativar entradas?

user98989
fonte
Não conheço nenhum mecanismo de comentários para o files-fromarquivo.
Jk013

Respostas:

17

De acordo com a manpágina norsync:

"... Linhas em branco em FILE e linhas começando com ';' ou '#' são ignorados ... "

Eu corri um teste rápido e de fato #e ;linhas são ignoradas.

rob_7cc
fonte
Não consigo segundos, ;mas o #(olhando aqui , pesquisando, quando as regras são ... '). → Então, sem dúvida, #é um pouco mais seguro ...
Frank Nocke
Não nesta página de manual do rSync : linux.die.net/man/1/rsync , nem nesta outra: ss64.com/bash/rsync.html . Você poderia, por favor, consultar o seu?
Sopalajo de Arrierez 01/04/19
1
Sua página realmente mostra que as linhas que começam com # são comentários: linux.die.net/man/1/rsync indica "... Quando as regras estão sendo lidas a partir de um arquivo, as linhas vazias são ignoradas, assim como as linhas de comentário que começam com a lq # rq. ... "(lq e rq são notação para aspas à esquerda e aspas à direita ... Não sei por que essa página da Web renderiza aspas como essas abreviações). Independentemente, # em um arquivo de exclusão rsync são comentários. Talvez a outra página de manual a que você se refere seja simplesmente antiga. Você pode revisar o histórico de log do rsync aqui: git.samba.org/?p=rsync.git;a=log
rob_7cc
A melhor coisa a fazer é olhar para a página de manual na plataforma em que você está desenvolvendo para determinar a versão do rsync que você está usando; você pode procurar na página de manual como os comentários são tratados por essa versão do rsync.
9788176256Código de Barras
10

Faça um grep -v '^#' file > /tmp/filetmpe, em seguida, inicie o seu rsync no/tmp/filetmp

Dependendo do seu shell, você poderá evitar o arquivo temporário (isso é válido no Bash):

rsync --files-from <(grep -v '^#' file) …

A <( … )sintaxe de aparência estranha é o que Bash chama de substituição de processo .

Dom
fonte
3
Eu adicionei o padrão ao seu grep para você - presumo que seja isso que você quis dizer ... Vou adicionar um truque também, fique à vontade para reverter uma ou ambas as edições, se você não concordar.
Derobert
Você pode usar --files-from=-para ter rsynclido a lista da entrada padrão.
Kusalananda
-1

por enquanto (rsync versão 3.1.1 protocolo versão 31): todas as linhas iniciadas #ou ;ignoradas ainda mannão têm informações sobre isso (meu caso era diferente, eu queria copiar um arquivo chamado ;_chare fiquei surpreso ao não usar - -from0 opção - depois de mudar de linha para ./;_charele começou a funcionar). Parece que a mesma função de análise é usada como para opções --include-fromou --exclude-from para a manpágina Para essas duas opções , mencione: Blank lines in the file and lines starting with ’;’ or ’#’ are ignored

ddzialak
fonte