On Sun, 08 Aug 2010 21:43:51 +0900, sfjro wrote:
>> it seems to work at the first glance, but it will fail in real
>> world. Because --max-delete=0 completely disable file deletion, if
>> there is any modification to the files in ro_mid branch at the RW
>> level, the script will fail.
>
> Did it really fail on your side?
> In the previous script, I tried "echo brabra >> u/d2/1" and aubrsync
> again, and "ro_mid/d2/1" was updated expectedly.
Ok, I just thought it over again and it turns out that I was right.
Here is more for you to test:
cd /tmp
rm -fr u rw ro_mid ro_bot
mkdir rw ro_bot ro_mid u
mkdir ro_bot/d1
seq 9 | xargs -i touch ro_bot/d1/{}
ls ro_bot/d1
mount -t aufs -o br:./rw:./ro_mid:./ro_bot none ./u
# work on something old
rm u/d1/[56]
mv u/d1/{4,four}
# work on something new
mkdir ./u/d2
seq 6 | xargs -i touch u/d2/{}
seq 7 9 | xargs -i mkdir u/d2/{}
seq 7 9 | xargs -i touch u/d2/{}/{}
% ls u/d?
u/d1:
1 2 3 7 8 9 four
u/d2:
1 2 3 4 5 6 7 8 9
find rw ro_mid
aubrsync _move u rw ro_bot "--remove-source-files --exclude=$AUFS_WH_BASE
--exclude=$AUFS_WH_PLINKDIR --exclude=$AUFS_WH_ORPHDIR --max-delete=0 -v
rw/ ro_mid"
% find rw ro_mid
rw
rw/.wh..wh.orph
rw/.wh..wh.plnk
rw/.wh..wh.aufs
ro_mid
ro_mid/d2
ro_mid/d2/6
ro_mid/d2/5
ro_mid/d2/4
ro_mid/d2/3
ro_mid/d2/2
ro_mid/d2/1
ro_mid/d2/9
ro_mid/d2/9/9
ro_mid/d2/8
ro_mid/d2/8/8
ro_mid/d2/7
ro_mid/d2/7/7
ro_mid/d1
ro_mid/d1/.wh.4
ro_mid/d1/.wh.5
ro_mid/d1/four
ro_mid/d1/.wh.6
-- everything get transferred over. So far so good.
# more work on something new
echo brabra >> u/d2/1
rm u/d2/2
mkdir u/d2/2
rm -rf u/d2/8
touch u/d2/8
# simulate an incremental transfer on the 2nd day:
aubrsync _move u rw ro_bot "--remove-source-files --exclude=$AUFS_WH_BASE
--exclude=$AUFS_WH_PLINKDIR --exclude=$AUFS_WH_ORPHDIR --max-delete=0 -v
rw/ ro_mid"
++ rsync --exclude=lost+found -aHSx --devices --specials --delete-before
--remove-source-files --exclude=.wh..wh.aufs --exclude=.wh..wh.plnk --
exclude=.wh..wh.orph --max-delete=0 -v rw/ ro_mid
building file list ... done
cannot delete non-empty directory: d1
cannot delete non-empty directory: d2/9
cannot delete non-empty directory: d2/7
./
d2/
d2/1
cannot delete non-empty directory: d2/8
could not make way for new regular file: d2/8
d2/2/
d2/2/.wh..wh..opq
Deletions stopped due to --max-delete limit (11 skipped)
sent 198 bytes received 59 bytes 514.00 bytes/sec
total size is 7 speedup is 0.03
rsync error: the --max-delete limit stopped deletions (code 25) at main.c
(1060) [sender=3.0.7]
% find rw ro_mid -printf "%M %p\n"
drwxr-xr-x rw
drwxr-xr-x rw/d2
-rw-r--r-- rw/d2/8
drwxr-xr-x rw/d2/2
drwx------ rw/.wh..wh.orph
drwx------ rw/.wh..wh.plnk
-r--r--r-- rw/.wh..wh.aufs
drwxr-xr-x ro_mid
drwxr-xr-x ro_mid/d2
-rw-r--r-- ro_mid/d2/1
drwxr-xr-x ro_mid/d2/2
-r--r--r-- ro_mid/d2/2/.wh..wh..opq
-rw-r--r-- ro_mid/d2/6
-rw-r--r-- ro_mid/d2/5
-rw-r--r-- ro_mid/d2/4
-rw-r--r-- ro_mid/d2/3
drwxr-xr-x ro_mid/d2/9
-rw-r--r-- ro_mid/d2/9/9
drwxr-xr-x ro_mid/d2/8
-rw-r--r-- ro_mid/d2/8/8
drwxr-xr-x ro_mid/d2/7
-rw-r--r-- ro_mid/d2/7/7
drwxr-xr-x ro_mid/d1
-r--r--r-- ro_mid/d1/.wh.4
-r--r--r-- ro_mid/d1/.wh.5
-rw-r--r-- ro_mid/d1/four
-r--r--r-- ro_mid/d1/.wh.6
See, having "--max-delete=0" have severely damaged the usability of
aubrsync. It only transfer the modifications half the way.
Please double check.
Thanks
--
Tong (remove underscore(s) to reply)
http://xpt.sourceforge.net/techdocs/
http://xpt.sourceforge.net/tools/
------------------------------------------------------------------------------
This SF.net email is sponsored by
Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev