2017-10-11 15 views
0

하나의 폴더 X에서 Y와 B로 파일을 복사해야합니다. 폴더가 아닌 파일을 삭제해야합니다. 지금까지는 쉽지만 폴더 X는 거의 연속적으로 파일을받을 것이고 파일이 연속적으로오고 있기 때문에 스크립트가 X로 5 파일을 복사 한 다음 Y로 8 파일을 복사하고 10 파일을 삭제할 수 있다고 생각할 수도 있습니다.배쉬 | 파일을 여러 폴더로 복사하고 스크립트를 삭제하십시오.

2000 개의 파일을 테스트했으며 모든 것이 훌륭하게 작동했습니다. 그러나 나는 어떤 파일도 잃지 않는다고 100 % 확신해야한다.

이 내 스크립트입니다

cp -R -v /$RootPath/MAPADMIN/$Client/Inbox/* /$RootPath/$Client/Inbox/ >> log.txt 
cp -R -v /$RootPath/MAPADMIN/$Client/Inbox/* /$RootPath/Backup/$Client/Inbox >> log.txt 
find /$RootPath/MAPADMIN/$Client/Inbox/ -maxdepth 2 -type f -delete >> log.txt 

이 스크립트는 내 상황에 적합하지만 난 0 % 손실 된 파일이 있는지 100 % 확인해야합니다. 이런 식으로 뭔가를 테스트 한 사람이 있습니까? 그렇기 때문에 더 오랜 시간이나 나를 도와 줄 수있는 사람이 있습니까?

감사합니다.

+0

원본 파일도 복사 중에 변경 될 수 있습니다 ... 원본 파일을 반복하고 각 반복에서 현재 파일의 md5sum을 계산하고 두 대상 폴더에 복사 한 다음 확인합니다 그것의 md5sum은 변하지 않았다. 그렇지 않은 경우 원본 파일을 삭제하십시오. 그랬다면 두 복사본을 삭제하고 원본은 삭제하십시오. 문제가 해결 될까요? –

답변

0

는이 같은 업데이트 : 그 디렉토리에있는 모든 폴더를 검색하고, 다음 각 폴더에 내가 모든 파일을 검색하고 내가 하나 하나려고하고

files=(*.*) 

if [ "$files" != "*.*" ] 
then 

for file in "${files[@]}"; do 

     cp "/$RootPath/$1/Outbox/$folder$file" /$RootPath/MAPADMIN/$1/Outbox/$folder 
     mv "/$RootPath/$1/Outbox/$folder$file" /$RootPath/Backup/$1/Outbox/$folder 
done 
fi 

. 3 개월 남았으며 거의 ​​50,000 개의 파일이 위의 스크립트를 사용하여 0 %의 손실로 이동되었습니다.

다른 사람에게 도움이되기를 바랍니다.

0

이 경우에는 rsync를 사용하는 것이 좋습니다.

rsync -arv /$RootPath/MAPADMIN/$Client/Inbox/ $RootPath/$Client/Inbox 2>&1 >> log.txt 
rsync -arv /$RootPath/MAPADMIN/$Client/Inbox/ /$RootPath/Backup/$Client/Inbox 2>&1 >> log.txt 
find /$RootPath/MAPADMIN/$Client/Inbox/ -maxdepth 2 -type f -delete >> log.txt 
+0

내 스크립트를 기반으로 한 예제를 제공해 주시겠습니까? – Theodor