내 rsync
결과 --dry-run
는 다음과 같습니다
% rsync --dry-run -avi --delete-after /home/blueray/Documents/rsync-test/src /home/blueray/Documents/rsync-test/dest
building file list ... done
.d..t...... src/
>f.st...... src/empty-asciidoc-document 3.adoc
>f+++++++++ src/empty-asciidoc-document 4.adoc
>f+++++++++ src/empty-asciidoc-document-renamed.adoc
*deleting src/empty-asciidoc-document.adoc
*deleting src/empty-asciidoc-document 2.adoc
sent 254 bytes received 27 bytes 562.00 bytes/sec
total size is 16 speedup is 0.06 (DRY RUN)
다음과 같은 출력을 찾고 있습니다.
building file list ... done
.d..t...... src/
>f.st...... src/empty-asciidoc-document 3.adoc
>f+++++++++ src/empty-asciidoc-document 4.adoc
>f+++++++++ src/empty-asciidoc-document-renamed.adoc
*deleting src/empty-asciidoc-document.adoc
*deleting src/empty-asciidoc-document 2.adoc
sent 254 bytes received 27 bytes 562.00 bytes/sec
total size is 16 speedup is 0.06 (DRY RUN)
Warning: n files will be affected, do you want to continue?
지금까지 내가 생각해낸 스크립트는 다음과 같습니다.
#!/bin/bash
affected_files=$(rsync --dry-run -avi --delete-after /home/blueray/Documents/rsync-test/src /home/blueray/Documents/rsync-test/dest)
echo $affected_files
number_of_affected_files=$(echo $affected_files | grep src | wc -l)
echo "Warning: ${number_of_affected_files} files will be affected, do you want to continue?"
while true; do
case $yn in
[Yy]* ) rsync -avi --delete-after /home/blueray/Documents/rsync-test/src /home/blueray/Documents/rsync-test/dest; break;;
[Nn]* ) exit;;
* ) read -p "Please answer yes or no: " yn;;
esac
done
그러나 몇 가지 문제가 있습니다. $affected_files
줄 바꿈은 유지되지 않습니다. 따라서 스크립트가 작동하지 않습니다. 또한 $affected_files | grep src | wc -l
영향을 받는 실제 파일 수가 제공되는지 확실하지 않습니다 .
어떡해?
답변1
OP 여기서 현재 사용중인 스크립트는 다음과 같습니다.
#!/bin/bash
rsync -ab --dry-run --stats --human-readable --inplace --debug=NONE --log-file=rsync.log --backup-dir=rsync_bak.$(date +"%d-%m-%y_%I-%M-%S%P") --log-file-format='%t %f %o %M' --delete-after /home/blueray/Documents/rsync-testsrc /home/blueray/Documents/rsync-testdest | sed -e '1d;5,12d;14,17d'
echo -e "\nDo you want to continue?"
while true; do
case $yn in
[Yy]* ) rsync -ab --human-readable --inplace --info=PROGRESS2,BACKUP,DEL --debug=NONE --log-file=/home/blueray/Documents/rsync-testdest/rsync.log --backup-dir=rsync_bak.$(date +"%d-%m-%y_%I-%M-%S%P") --log-file-format='%t %f %o %M' --delete-after /home/blueray/Documents/rsync-testsrc /home/blueray/Documents/rsync-testdest; break;;
[Nn]* ) exit;;
* ) read -p "Please answer yes or no: " yn;;
esac
done