Rsync over sshfs пропускает имена файлов, начинающиеся с символа подчеркивания

Я пытаюсь синхронизировать дерево каталогов из 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 и - включить '_ *' , которые не дали никакого эффекта.

Что я делаю не так ?

4
задан 12 January 2017 в 18:19
1 ответ

Оказывается, преступник был во флагах sshfs. Флаг noappled double, который я использовал, чтобы избавиться от файлов .DS_Store на самом деле вмешивался в работу rsync.

Из документа sshfs Mount Options:

noappled double

Эта опция делает 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 вмешивался и блокировал его создание.

Удаление опции noappled double из команды установки sshfs исправило проблему, и файлы _* были переданы прекрасно.

Спасибо @Halfgaar за то, что указал мне правильное направление.

.
3
ответ дан 3 December 2019 в 03:40

Теги

Похожие вопросы