
我使用以下命令將一個目錄的內容完整、遞歸地複製到另一個目錄:
rsync -avzhe /path1/to1/dir1/* /path2/to2/dir2/
它按照我的預期工作,除了第一個文件(按字母順序排列),無論是目錄還是文件,都不會被複製。所有其他文件都會被複製。為什麼 ?
如果重要的話,我的作業系統是 MacOS 10.14.6。
答案1
此-e
選項需要一個參數,因此它採用第一個檔案名稱。我不確定你為什麼想要,-e
因為它設定了用於連接到遙控器的命令,但你沒有使用遙控器。只需刪除-e
.
答案2
/path1/to1/dir1
若要製作名為 的目錄的完整副本/path2/to2/dir2
,請使用
rsync -av /path2/to1/dir1/ /path2/to2/dir2
-z
對本機副本使用壓縮 ( ) 是沒有意義的。此-e
選項指定用於建立網路連線的命令(這就是您的命令在複製第一個檔案時失敗的原因;rsync
將其用作該選項的選項參數-e
),因此在這種情況下也應該將其刪除。
另外,不要*
在來源路徑的末端使用,因為這通常不會符合任何隱藏名稱。通配所有名稱dir1
也可能會導致清單太長而導致指令根本無法執行。
只需確保來源路徑以斜線結尾即可。目標路徑末端的斜線沒有任何差異。從來源路徑中刪除斜線將複製dir1
到dir2
.來源路徑末端的斜槓會dir2
產生dir1
.
除此之外,您可能需要使用它-H
來確保在目標處正確建立硬鏈接,並且--sparse
您知道您正在複製可能稀疏的檔案(例如預先分配的磁碟映像)。
--delete
也用於刪除來自不屬於原始檔案層次結構一部分的目標的條目。請謹慎使用。您可能需要先使用-n
( --dry-run
) 進行測試運行。