Проблема происходит из-за rsync
создание временных файлов с именами файлов, которые не понимают box.com и/или davfs. Таким образом файл .01_Track_1.mp3.YVmFI9
не существует в Вашей системе, но временный артефакт rsync
. Некоторые догадки с моей стороны: если Вы не получаете ошибку на всех файлах, Вы, вероятно, только получаете ошибки на файлах, которые были уже загружены (и изменился).
Это раньше было невозможно выключить это временное поколение файла, но у Вас могло бы в наше время быть больше удачи путем добавления опции --inplace
. Однако преимущества использования rsync, если Вы не говорите с rsync-демоном (который Вы не то, при использовании davfs), неясны мне.
Поэтому как альтернатива, Вы могли попробовать cp --update
, который только копирует файл, когда источник является более новым, чем место назначения. Новые файлы и любые файлы с изменениями в тегах ID3 будут скопированы, другие не будут.
Или если у Вас должно быть больше использования управления find
:
cd /home/me/Music/
find * -size -250M -print0 | cpio -pdmv0 /home/me/Cloud/Box/Music
это сохраняет структуру иерархии и cpio
не перезаписывает существующие файлы, которые не являются более старыми.
Есть ли в именах файлов какие-либо специальные символы? В зависимости от файловой системы Вы пишете эти файлы в, они не могут позволить Вам файлам префикса с точкой (.
) например.
Я столкнулся с этим сообщением в блоге, где проблема описана с rsync
наличие проблемы, пишущий/отслеживая время изменения файла через webdav2 смонтировало каталоги box.com.
Проблема обнаруживается как это в смонтированной файловой системе:
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
Та же самая статья показала обходное решение:
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
Это - OK способ использовать rsync
, но это только сравнивает файлы на основе их размера теперь, не их контрольных сумм.
Я столкнулся с этим названным потоком: rsync через davfs2? в WebDAV (davfs) форум по SourceForge. Кто-то справлялся об аналогичной ситуации, где они хотели использовать WebDAV, чтобы смонтировать поставщика онлайн-хранилища и выполнить rsync's к смонтированному устройству хранения данных через WebDAV. Это - то, что один из разработчиков (Werner Baumann) WebDAV должен был сказать об этой теме.
выборка ответа Werner
davfs2 только загрузит полные файлы. Это не может сделать, возрастающий материал rsync обычно делает, и это делает rsync очень эффективный.
davfs2 использует локальный кэш на диске. Это сделает это более быстро реагирующим, и Ваше приложение должно получить прибыль от этого также. Но этому нужно пространство локального диска для этого. Необходимо допускать большой размер кэша, таким образом, rsync может сделать большую часть своей работы с локальным кэшем, и davfs2 загрузит большинство файлов в фоновом режиме, когда rsync уже закончился.
Werner продолжает предлагать следующее
Это могло быть недостатком в этом случае. Когда rsync читает файл на удаленном хосте, он должен быть передан davfs2 в локальный кэш сначала (если это уже не там). Это могло сделать процесс действительно и ненужный медленным. Как rsync только работает сложной программой копии в Вашем случае, могло бы быть лучше использовать CP вместо этого. CP имеет опции (-u) для копирования только файлов, которые являются более новыми, чем те в davfs2 файловой системе (= smartdrive), и это не должно было бы читать файлы, но только читает метаданные файла как mtime.
Команда как "CP - pru каталог/к/резервное копирование dav /" могла бы сделать задание. Он shold не загружают файлы (как rsync мог бы сделать, но я не уверен) (посмотрите на руководства CP и rsync).
Таким образом, как @Anthon предположил, можно использовать cp -u
метод для копирования файлов. Понимание, что этот метод только смотрит на размер файла как на фактор в сравнении, таким образом, это не абсолютно надежно.
Вы не должны использовать ничего, что только смотрит на время изменения при сравнении файлов, cp -pru
. Werner объясняет почему в этом потоке:
выборка по проблеме с ультрасовременными временами
Когда Вы размонтировали davfs2 файловую систему и монтируете его снова в некоторое более позднее время, времена файла, возможно, изменились согласно информации времени с сервера. Инструменты как CP - pu и rsync не могут полагаться на эти времена для определения то, что изменили файлы.
Так, учитывая различные проблемы, окружающие время изменения, подход с помощью чисто контрольных сумм походит на лучшее соответствие:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
got file_sum recv_files(Some_Music_[1999]/Some_Music_[1999]Zuni_SongVarious_Artists24.mp3) rsync: mkstemp "/home/me/Cloud/Box/Music/Some_Music_[1999]/.Some_Music_[1999]Zuni_SongVarious_Artists24.mp3.1aWWRY" failed: Invalid argument (22) got file_sum
– MountainX-for-Monica
11.06.2013, 03:46
got file_sum recv_files(Carlos/Dance/05-Tapestry-Carlos.mp3) rsync: mkstemp "/home/me/Cloud/Box/Music/Carlos/Dance/.05-Tapestry-Carlos.mp3.WeGbGS" failed: Invalid argument (22) got file_sum recv_files(Carlos/Dance/06-Dance-Turquoise_Dance-Carlos.mp3)
– MountainX-for-Monica
11.06.2013, 03:48
rsync
Вы используете? rsync --version
.
– slm♦
11.06.2013, 04:50
rsync version 3.0.9 protocol version 30
и я тестирую Ваше обновленное решение теперь.Спасибо!
– MountainX-for-Monica
11.06.2013, 07:28
Чтобы остановить ошибку Invalid argument (22)
, мне пришлось запретить rsync создавать свои временные файлы в месте назначения davfs.
rsync --temp-dir=/tmp
Я думаю, что происходит то, что имена временных файлов rsync начинаются с .
, а davfs этого не позволяет. Поэтому я пошел дальше и сказал rsync игнорировать исходные файлы с именами, начинающимися с .
. Поскольку я использую --delete
, я также запретил rsync пытаться удалить каталог lost+found
в месте назначения davfs.
rsync --temp-dir=/tmp --exclude lost+found --exclude '.*'
--max-size=250M --exclude '.*'
. Я уверенcp
может быть сделан сделать это..., возможно, путем передачи по каналу вывода находки в CP? Но я не знаю, как сделать это все же. Если мы предложим решение, то я попробуюcp -ru
. Спасибо – MountainX-for-Monica 11.06.2013, 07:39... -size -250M
делает, иначе Вы использовали бы+250M
(здесь была кратко неверная версия, но я понял это, прежде чем редактирование было зафиксировано) – Anthon 11.06.2013, 08:25