我在 處掛載了一個磁碟/data
。目前這裡是空的。
我需要rsync
執行mkdir -p
比mkdir
作為我需要處於等級 4 的文件,即/data/dir_1/dir_2/dir_3/filename
當dir_1
、dir_2
和dir_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/ $_