rsyncを使用してアップロードする必要がある2つの異なるディレクトリには、多くのダンプファイルがあります。時間を節約するために、各ダンプファイルに対して同時にrsyncを実行したいと思います。
ダンプファイル:
Dir1:
- /u05/expdpdump/exppdb/dir1/NoTDE_CDB_FULL1_01.dmp
- /u05/expdpdump/exppdb/dir1/NoTDE_CDB_FULL1_02.dmp
- /u05/expdpdump/exppdb/dir1/NoTDE_CDB_FULL1_03.dmp
- /u05/expdpdump/exppdb/dir1/NoTDE_CDB_FULL1_04.dmp
Dir2:
- /u05/expdpdump/exppdb/dir2/NoTDE_CDB_FULL2_01.dmp
- /u05/expdpdump/exppdb/dir2/NoTDE_CDB_FULL2_02.dmp
- /u05/expdpdump/exppdb/dir2/NoTDE_CDB_FULL2_03.dmp
- /u05/expdpdump/exppdb/dir2/NoTDE_CDB_FULL2_04.dmp
次のrsyncコマンドは、各ディレクトリの各ダンプファイルに対してバックグラウンドで実行されます。
rclone sync /u05/expdpdump/exppdb/NoTDE_CDB_FULL_01.dmp NoTDE_Mig1:IC_dbbackup_config_datapump_xxxxxx
各ファイルに対してrsyncを実行するために必要な出力を取得できましたが、各ファイルの開始時刻と終了時刻、およびバックグラウンドで実行されているrsyncジョブの実行全体を追跡したいと思います。 forループ内で使用すると、time
各ファイルの経過時間のみが提供されますが、すべての操作が完了した後の開始時間と終了時間の合計経過時間も必要です。
dumpdir1="/u05/expdpdump/exppdb/dir1"
for i in $dumpdir1/*.dmp
do
echo " time rclone sync $i NoTDE_Mig1:IC_dbbackup_config_datapump_v00rcfh_iad3p2 &"
done
dumpdir2="/u05/expdpdump/exppdb/dir2"
for i in $dumpdir2/*.dmp
do
echo " time rclone sync $i NoTDE_Mig1:IC_dbbackup_config_datapump_v00rcfh_iad3p2 &"
done```
ベストアンサー1
このような:
# `time` will give the total time
time parallel -j0 --joblog mylog rclone sync {} NoTDE_Mig1:IC_dbbackup_config_datapump_v00rcfh_iad3p2 ::: /u05/expdpdump/exppdb/dir{1,2}/*.dmp
# the log contains the time per file
cat mylog
ディスクに応じてすべてのコマンドを並列に実行しないと、より良いパフォーマンスが得られます。を置き換えることで、-j0
並列に実行されるジョブの数を5つに制限できます-j5
。