Rsync

按字母順序排列的第一個文件未使用 rsync 複製

  • October 21, 2021

我正在使用以下命令將一個目錄的內容以遞歸方式完整復製到另一個目錄中:

rsync -avzhe /path1/to1/dir1/* /path2/to2/dir2/

它按我的預期工作,除了第一個文件(按字母順序),無論是目錄還是文件,都沒有被複製。其他所有文件都會被複製。為什麼 ?

如果重要的話,我的作業系統是 MacOS 10.14.6。

/path1/to1/dir1要製作名為的目錄的完整副本/path2/to2/dir2,請使用

rsync -av /path2/to1/dir1/ /path2/to2/dir2

-z對本地副本使用壓縮 ( ) 是沒有意義的。該-e選項指定用於建立網路連接的命令(這就是您的命令無法複製第一個文件的原因;rsync將其用作選項的選項參數-e),因此在這種情況下也應將其刪除。

此外,不要*在源路徑的末尾使用,因為它通常不會匹配任何隱藏的名稱。通配所有名稱dir1也可能會擴展為一個太長的列表,以至於命令根本無法執行。

只需確保源路徑以斜杠結尾。目標路徑末尾的斜線沒有區別。從源路徑中刪除斜線將復製dir1dir2. 源路徑末尾的斜杠會dir2複製dir1.

除此之外,您可能希望使用-H它來確保在目的地正確建立硬連結,並且--sparse如果您知道您正在複製可能是稀疏的文件(如預分配的磁碟映像)。

--delete還用於從目標中刪除不屬於源文件層次結構的條目。請謹慎使用。您可能想先用-n( --dry-run) 測試執行。

-e選項需要一個參數,因此它採用第一個文件名。我不確定你為什麼想要-e,因為它設置了用於連接到遙控器的命令,但你沒有使用遙控器。只需刪除-e.

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