machineB
我需要 scp 來自和machineC
到的檔案machineA
。我正在運行下面的 shell 腳本machineA
。我已經正確設定了 ssh 密鑰。
如果檔案不存在於 中machineB
,那麼它應該存在於 中machineC
。
#!/bin/bash
readonly PRIMARY=/data01/primary/.
readonly FILERS_LOCATION=(machineB machineC)
readonly MAPPED_LOCATION=/bat/data/snapshot
PARTITION=(0 3 5 7 9)
dir1=/bat/data/snapshot/20131222
dir2=/bat/data/snapshot/20131222
scp david@${FILERS_LOCATION[0]}:$dir1/weekly_1980_[$el]_200003_5.data $PRIMARY || scp david@${FILERS_LOCATION[1]}:$dir2/weekly_1980_[$el]_200003_5.data $PRIMARY
現在我的問題是,如果你看看我上面的 scp 命令,我[$el]
現在有(這是錯誤的),我需要將其替換為PARTITION
,這意味著我需要迭代PARTITION
並替換[$el]
為 PARTITION 中的每個數字。
PARTITION
所以如果我一項一項迭代,我的 scp 命令應該如下所示-
scp david@machineB:/bat/data/snapshot/20131222/weekly_1980_0_200003_5.data /data01/primary/. || scp david@machineC:/bat/data/snapshot/20131222/weekly_1980_0_200003_5.data /data01/primary/.
scp david@machineB:/bat/data/snapshot/20131222/weekly_1980_3_200003_5.data /data01/primary/. || scp david@machineC:/bat/data/snapshot/20131222/weekly_1980_3_200003_5.data /data01/primary/.
scp david@machineB:/bat/data/snapshot/20131222/weekly_1980_5_200003_5.data /data01/primary/. || scp david@machineC:/bat/data/snapshot/20131222/weekly_1980_5_200003_5.data /data01/primary/.
scp david@machineB:/bat/data/snapshot/20131222/weekly_1980_7_200003_5.data /data01/primary/. || scp david@machineC:/bat/data/snapshot/20131222/weekly_1980_7_200003_5.data /data01/primary/.
scp david@machineB:/bat/data/snapshot/20131222/weekly_1980_9_200003_5.data /data01/primary/. || scp david@machineC:/bat/data/snapshot/20131222/weekly_1980_9_200003_5.data /data01/primary/.
問題陳述:-
- 如何以這種方式迭代 PARTITION,以便我可以執行上述 SCP 命令?
- 而且,正如您所看到的,我正在將文件一一複製到
machineA
/data01/primary/
資料夾中。有更好的方法嗎?意思是,我可以一次將所有文件複製在一起,而不是一個一個地複製嗎?
答案1
您可以像這樣迭代 PARTITION 數組
for el in "${PARTITION[@]}"
do
echo "$el"
done
答案2
我建議考慮rsync
完成此任務,因為它為此類備份提供了更全面的功能。您可以從機器 A 執行此操作,將其指向 B 和 C 上的快照目錄,整個快照目錄將被鏡像。
然後您可以cron
按設定的時間間隔安排此操作。 scp
非常適合一次性副本,但您的場景聽起來像是常規備份作業。 rsync
也透過標準 SSH 連接埠進行通信,因此如果scp
目前可以工作,則無需更改網路、防火牆等。
rsync
如果需要,您甚至可以實現在所有三台伺服器上建立相同鏡像的功能。