Я пытаюсь синхронизировать дерево каталогов из OS X (10.11) в Ubuntu 14.04. Хотя большинство файлов передаются нормально, файлы с именами, начинающимися с _
(подчеркивание) нет.
Вот команда, которую я использую:
rsync -rtvh --progress ~/Pictures/processed/ ~/mnt/processed/
И пример вывода:
sending incremental file list
_MG_7425.jpg
4.66M 100% 169.79MB/s 0:00:00 (xfr#1, to-chk=58/60)
_MG_7427.jpg
6.59M 100% 103.07MB/s 0:00:00 (xfr#2, to-chk=57/60)
...
rsync: mkstemp "/Users/user/mnt/processed/._MG_7425.jpg.0cAYb3" failed: No such file or directory (2)
rsync: mkstemp "/Users/user/mnt/processed/._MG_7427.jpg.5Gw1vD" failed: No such file or directory (2)
sent 306.24M bytes received 9.46K bytes 122.50M bytes/sec
total size is 306.17M speedup is 1.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1249) [sender=3.1.2]
Мой rsync установлен из homebrew, информация о версии:
rsync version 3.1.2 protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags
Удаленное место монтируется с помощью sshfs
:
sshfs -o idmap=user username@hostname:/some/path ~/mnt -o auto_cache,reconnect,defer_permissions,noappledouble
Копирование одного из пропущенных файлов с помощью cp
команда выполнена успешно. Я пробовал добавить --iconv=utf-8-mac,utf-8
и --include '_*'
варианты, которые не повлияли.
Что я делаю не так?
Оказывается, виноват в sshfs
флаги. В noappledouble
флаг, который я использовал, чтобы избавиться от .DS_Store
файлы действительно мешали rsync
работа.
noappledouble
Эта опция заставляет osxfuse запрещать все типы доступа к Apple Double (
._
) файлы и.DS_Store
файлы. Любые существующие файлы станут явно несуществующими. Новые файлы, соответствующие критериям, не будут созданы.
Как указывается, опция также касается ._
префикс имени, который именно то, что rsync
довелось использовать для своих временных файлов:
rsync: mkstemp "/Users/user/mnt/processed/._MG_7425.jpg.0cAYb3" failed: No such file or directory (2)
Таким образом, когда mkstemp
создавал временный файл, sshfs
вмешался и заблокировал его создание.
Удаление noappledouble
вариант из sshfs
команда монтирования устранила проблему и _*
файлы были переданы нормально.
Спасибо @Halfgaar за то, что указал мне в правильном направлении.