有没有人知道是否有一个rsync选项,可以在遍历目录时不会在stdout上显示。
我正在同步音乐库,大量的目录让我很难看到实际发生了哪些文件变化。 我已经尝试过-v和-i,但两者都会显示目录。
有没有人知道是否有一个rsync选项,可以在遍历目录时不会在stdout上显示。
我正在同步音乐库,大量的目录让我很难看到实际发生了哪些文件变化。 我已经尝试过-v和-i,但两者都会显示目录。
grep -E -v '/$'
的问题是它会省略诸如以下信息行的内容:deleting folder1/
deleting folder2/
deleting folder3/folder4/
如果你正在备份,而由于某种原因远程文件夹已经被彻底清空,那么它也会清除你的本地文件夹,因为你看不到删除行。
如果想要同时省略已存在的文件夹和保留删除行,可以使用以下表达式:
rsync -av --delete remote_folder local_folder | grep -E '^deleting|[^/]$'
我会倾向于使用管道过滤器 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
`rsync -av --delete remote_folder local_folder | grep -E
'^deleting|[^/]$|^$'` - Anthony Geoghegangrep
命令中添加了--color=never
,以避免不必要的匹配字符高亮显示。 - Roger Dueck