从 2 个不同的目录并行运行多个文件的 Rsync,并查找每个文件和所有文件的运行时间

从 2 个不同的目录并行运行多个文件的 Rsync,并查找每个文件和所有文件的运行时间

我在 2 个不同的目录中有很多转储文件,需要使用 rsync 上传,我想同时为每个转储文件运行 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

相关内容