不要在rsync输出中显示目录

Koe*_*eyn 25 rsync command-line

有没有人知道是否有rsync选项,因此正在遍历的目录不会显示在stdout上.

我正在同步音乐库,而大量的目录使得很难看到实际发生了哪些文件更改.我已经尝试了-v和-i,但两者都显示了目录.

小智 26

如果您在rsync命令中使用--delete,则调用的问题grep -E -v '/$'是它将省略以下信息行:

deleting folder1/
deleting folder2/
deleting folder3/folder4/
Run Code Online (Sandbox Code Playgroud)

如果您正在进行备份并且因为X原因已完全删除了远程文件夹,则它还会清除您的本地文件夹,因为您没有看到删除行.

要省略现有文件夹但同时保留删除行,可以使用以下表达式:

rsync -av --delete remote_folder local_folder | grep -E '^deleting|[^/]$'
Run Code Online (Sandbox Code Playgroud)

  • 好答案.对于文件同步,我喜欢在运行命令之前进行干运行,因此我使用`-n`选项.为了便于阅读,我修改了grep regex以包含空行,`rsync -av --delete remote_folder local_folder | grep -E'^删除| [^ /] $ | ^ $'` (3认同)

小智 12

我很想通过管道来过滤使用grep -E -v'/ $',它使用行尾锚来删除以斜杠(目录)结束的行.

这是演示终端会话,我检查了它...

cefn@cefn-natty-dell:~$ mkdir rsynctest
cefn@cefn-natty-dell:~$ cd rsynctest/
cefn@cefn-natty-dell:~/rsynctest$ mkdir 1
cefn@cefn-natty-dell:~/rsynctest$ mkdir 2
cefn@cefn-natty-dell:~/rsynctest$ mkdir -p 1/first 1/second
cefn@cefn-natty-dell:~/rsynctest$ touch 1/first/file1
cefn@cefn-natty-dell:~/rsynctest$ touch 1/first/file2
cefn@cefn-natty-dell:~/rsynctest$ touch 1/second/file3
cefn@cefn-natty-dell:~/rsynctest$ touch 1/second/file4

cefn@cefn-natty-dell:~/rsynctest$ rsync -r -v 1/ 2
sending incremental file list
first/
first/file1
first/file2
second/
second/file3
second/file4

sent 294 bytes  received 96 bytes  780.00 bytes/sec
total size is 0  speedup is 0.00


cefn@cefn-natty-dell:~/rsynctest$ rsync -r -v 1/ 2 | grep -E -v '/$'
sending incremental file list
first/file1
first/file2
second/file3
second/file4

sent 294 bytes  received 96 bytes  780.00 bytes/sec
total size is 0  speedup is 0.00
Run Code Online (Sandbox Code Playgroud)

  • 我自己得出了同样的结论.只是看起来很愚蠢,rsync没有切换这样做.谢谢你的建议! (6认同)