Ssh

如何獲取有關通過遠端 rsync 命令複製到我的機器的文件的資訊?

  • October 21, 2015

我正在將目錄從機器B同步到機器Arsync命令在機器B上執行。

在機器A上,我可以在不進入機器Brsync的情況下獲得有關此過程的哪些資訊(進度/下載的數據量等)?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

引用自:https://unix.stackexchange.com/questions/237591