から へmachineB
ファイルを scp する必要があります。 から以下のシェル スクリプトを実行しています。 ssh キーを適切に設定しました。machineC
machineA
machineA
ファイルが にない場合は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 内の各番号を繰り返してPARTITION
置き換える必要があるということです[$el]
。
PARTITION
したがって、 1つずつ繰り返すと、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/.
問題文:-
- 上記の SCP コマンドを作成できるように、PARTITION をこのように反復するにはどうすればよいですか?
- また、ご覧のとおり、ファイルを 1 つずつ
machineA
/data01/primary/
フォルダーにコピーしています。これを行うより良い方法はありますか? つまり、1 つずつ行うのではなく、すべてのファイルを一度にコピーできますか?
答え1
PARTITION配列を次のように反復処理できます。
for el in "${PARTITION[@]}"
do
echo "$el"
done
答え2
このタイプのバックアップに全般的に優れた機能を提供するため、このタスクを完了するには を検討することをお勧めしますrsync
。これをマシン A から実行し、B と C のスナップショット ディレクトリを指定すると、スナップショット ディレクトリ全体がミラーリングされます。
その後、 を使用して、cron
これを設定された間隔でスケジュールすることができます。 は scp
1 回限りのコピーには理想的ですが、シナリオは定期的なバックアップ ジョブのように思えます。 rsync
また、標準の SSH ポート経由で通信するため、scp
現在動作している場合は、ネットワーク、ファイアウォールなどを変更する必要はありません。
rsync
必要に応じて、3 つのサーバーすべてに同一のミラーを作成する機能を実装することもできます。