2つの異なるディレクトリで複数のファイルのRsyncを並列に実行し、各ファイルとすべてのファイルの実行時間を見つけます。

2つの異なるディレクトリで複数のファイルのRsyncを並列に実行し、各ファイルとすべてのファイルの実行時間を見つけます。

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

おすすめ記事