Здравствуйте!
Пытаюсь копировать файлы с помощью rsync на файловую систему NTFS, смонтированную с опцией umask=0000. rsync ругается и файлы не создаёт. Думал может файлы попадут в --partial-dir=, но этого тоже не происходит:
$ rsync -avu --partial-dir=Camera3 Camera/PRG001/ Camera2
sending incremental file list
rsync: failed to set times on "/mnt/win-d/Camera2/.": Operation not permitted (1)
./
MOV001.MOD
MOV001.MOI
MOV002.MOD
MOV002.MOI
PRG001.PGI
rsync: mkstemp "/mnt/win-d/Camera2/.MOV001.MOD.vonluu" failed: Operation not permitted (1)
rsync: mkstemp "/mnt/win-d/Camera2/.MOV001.MOI.QoPSh6" failed: Operation not permitted (1)
rsync: mkstemp "/mnt/win-d/Camera2/.MOV002.MOD.5zsu5H" failed: Operation not permitted (1)
rsync: mkstemp "/mnt/win-d/Camera2/.MOV002.MOI.YniqZj" failed: Operation not permitted (1)
rsync: mkstemp "/mnt/win-d/Camera2/.PRG001.PGI.f4GqTV" failed: Operation not permitted (1)
sent 17,669,953 bytes received 675 bytes 35,341,256.00 bytes/sec
total size is 17,665,297 speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
Пишет что передал 17,5 Мб, но куда они все пропали? Если ntfs примонтировать без umask, то копирование проходит и даже timestamp'ы копируются. Если попробовать без опции -a, с опцией -r, копирование так же проходит (без сохранения timestamp'ов). По ссылке полный strace:
https://drive.google.com/open?id=0ByWS85CFyRGwRC1BZWwybDZadDA
И в нём я не вижу ни намёка на попытку создания нового файла.
Файлы я, конечно, уже давно скопировал с помощью cp, но привязался я к этой проблемы вовсе не из-за этого. Дело в том, что я пишу файловый менеджер (не ещё один Explorer-подобный или Norton-подобный, а действительно уникальный, ссылка на проект в профиле) и рассчитываю использовать rsync для копирования файлов. Это даст интересные плюшки как лёгкое докопирование и лёгкое обновление backup'а. И понятно, что файловый менеджер должен нормально отрабатывать копирование и на ntfs и на что угодно.
Когда пытаюсь делать mkstemp ручками никакой ошибки не происходит, временный файл создаётся. А мне нужно способ как кратчайшим путём узнать что rsync -a не пройдёт, и переключится на rsync -r. Есть идеи?