Saya mencoba menentukan ukuran file yang akan disalin baru ketika menyinkronkan dua folder dengan menjalankan rsync dalam mode kering dan kemudian merangkum ukuran file yang tercantum dalam output rsync.
Saat ini saya mandek pada awalan file oleh folder induknya. Saya menemukan cara untuk awalan garis menggunakan sed dan bagaimana cara melarikan diri menggunakan sed, tapi saya kesulitan menggabungkan keduanya.
Sejauh ini yang saya dapat:
source="/my/source/folder/"
target="/my/target/folder/"
escaped=`echo "$source" | sed -e 's/[\/&]/\\//g'`
du `rsync -ahnv $source $target | tail -n +2 | head -n -3 | sed "s/^/$escaped/"` | awk '{i+=$1} END {print i}'
Ini adalah output yang saya dapatkan dari bash -x myscript.sh
+ source=/my/source/folder/
+ target=/my/target/folder
++ echo /my/source/folder/
++ sed -e 's/[\/&]/\//g'
+ escaped=/my/source/folder/
+ awk '{i+=$1} END {print i}'
++ rsync -ahnv /my/source/folder/ /my/target/folder/
++ sed 's/^//my/source/folder//'
++ head -n -3
++ tail -n +2
sed: -e expression #1, char 8: unknown option to `s'
+ du
80268
Setiap ide tentang cara melarikan diri dengan benar akan sangat dihargai.