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
.