rsync 拋出 mkdir:無法建立目錄 '/data/dir_1/dir_2/dir_3/':沒有這樣的檔案或目錄

rsync 拋出 mkdir:無法建立目錄 '/data/dir_1/dir_2/dir_3/':沒有這樣的檔案或目錄

我在 處掛載了一個磁碟/data。目前這裡是空的。

我需要rsync執行mkdir -pmkdir作為我需要處於等級 4 的文件,即/data/dir_1/dir_2/dir_3/filenamedir_1dir_2dir_3不存在時。

如果我手動建立所需的子目錄,我可以使用以下命令執行 rsync:

rsync -avz source_diretory/ /data/dir_1/dir_2/dir_3

但如果我不建立子目錄,此命​​令會引發錯誤:

mkdir: cannot create directory ‘/data/dir_1/dir_2/dir_3/’: No such file or directory

我嘗試谷歌搜索,閱讀 rsync 的手冊頁,嘗試使用-r -R但無法使其工作。

可以rsync執行類似的操作mkdir -p或超出其範圍嗎?

答案1

rsync命令不會建立目錄樹,因此您可以透過執行以下命令來建立目錄樹:

 mkdir -p /data/dir_1/dir_2/dir_3

rsync在命令或使用之前--rsync-路徑選項:

--rsync-path=PROGRAM 使用此選項指定要在遠端電腦上執行什麼程式來啟動 rsync。

你的命令應該是:

 rsync -avz source_diretory/ --rsync-path="mkdir -p /data/dir_1/dir_2/dir_3 && rsync" /data/dir_1/dir_2/dir_3

這裡有一個有用的關聯

答案2

在 Linux 中建立 rsync 目標路徑的一種較短方法是使用「$_」特殊變數。 (我認為,但無法證實,在 OSX 中也是一樣的)。

'$_' 儲存上一個執行指令的最後一個參數的值。所以這個問題可以這樣回答:

mkdir -p /data/dir_1/dir_2/dir_3 && rsync -avz source_directory/ $_

相關內容