我正在从机器同步目录乙加工A。rsync
命令在机器上运行乙。
在机器上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
这似乎是用于写入临时文件的文件描述符。这至少会向您显示它所在的目录。