如何获取有关通过远程 rsync 命令复制到我的计算机的文件的信息?

如何获取有关通过远程 rsync 命令复制到我的计算机的文件的信息?

我正在从机器同步目录加工Arsync命令在机器上运行

在机器上A,我可以在不进入机器的情况下获得有关此过程的什么样的信息rsync(进度/下载的数据量等)ssh

答案1

您可以指定远程系统的选项来记录,例如。

--remote-option=--log-file=/path/to/log/rsync.log

这是一个小型 rsync 运行的示例

2015/10/21 10:59:43 [10785] receiving file list
2015/10/21 10:59:43 [10785] created directory stack2
2015/10/21 10:59:43 [10785] cd+++++++++ ./
2015/10/21 10:59:43 [10785] >f+++++++++ Filexxx
2015/10/21 10:59:43 [10785] >f+++++++++ logfile
2015/10/21 10:59:43 [10785] >f+++++++++ logfile.sh
2015/10/21 10:59:43 [10785] cd+++++++++ dir1/
2015/10/21 10:59:43 [10785] >f+++++++++ dir1/FileA
2015/10/21 10:59:43 [10785] >f+++++++++ dir1/FileB
2015/10/21 10:59:43 [10785] >f+++++++++ dir1/FileC
2015/10/21 10:59:43 [10785] >f+++++++++ dir1/filec
2015/10/21 10:59:43 [10785] cd+++++++++ dir2/
2015/10/21 10:59:43 [10785] >f+++++++++ dir2/filea
2015/10/21 10:59:43 [10785] >f+++++++++ dir2/fileb
2015/10/21 10:59:43 [10785] sent 240 bytes  received 1,703 bytes  total size 1,051

答案2

假设您有足够的权限,您可以使用strace接收rsync进程或使用lsof来查看它打开了哪些文件。

找到 rsync 进程 pid,例如使用pgrep rsync,但选择子进程,因为可能有两个。然后使用例如

strace -p 4484 -e rename

其中 4484 是找到的 pid。它将显示正在创建的每个新文件,因为它是从临时名称重命名的。您可以使用以下方法稍微简化输出:

pid=$(pgrep -n rsync)
strace -p "$pid" -e rename 2>&1 | sed 's/.*", //;s/) = 0//'

或者,使用例如

 watch ls -l /proc/4484/fd/1

这似乎是用于写入临时文件的文件描述符。这至少会向您显示它所在的目录。

相关内容