Ssh
如何獲取有關通過遠端 rsync 命令複製到我的機器的文件的資訊?
我正在將目錄從機器B同步到機器A。
rsync
命令在機器B上執行。在機器A上,我可以在不進入機器B
rsync
的情況下獲得有關此過程的哪些資訊(進度/下載的數據量等)?ssh
假設您有足夠的權限,您可以
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
這似乎是用於寫入臨時文件的文件描述符。這將至少向您顯示它所在的目錄。
您可以為遠端系統指定一個選項來記錄,例如。
--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