1. Питання зі спеціальними символами у назви файлів
Чи є спеціальні символи у назви файлів? Залежно від файлової системи, в яку ви пишете ці файли, вони можуть не дозволяти вам префіксувати файли, наприклад, крапкою ( .
).
2. Проблеми з часом модифікації rsync та webdav2
Я наткнувся на цю публікацію в блозі, де описується проблема, пов’язана з тим, rsync
що виникають проблеми з написанням / відстеженням часу зміни файлів у каталогах box.com.com, встановлених webdav2.
Проблема виявляється так у змонтованій файловій системі:
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/
Це нормальний спосіб використання rsync
, але це лише порівняння файлів залежно від їх розміру, а не контрольних сум.
3. Проблеми з davfs2 (WebDAV)
Я натрапив на цю тему під назвою: rsync via davfs2? на форумі WebDAV (davfs) на sourceforge. Хтось розпитував про подібну ситуацію, коли вони хотіли використовувати WebDAV для монтажу постачальника послуг онлайн-сховища та виконання rsync на встановленому сховищі через WebDAV. Це сказав один із розробників (Werner Baumann) WebDAV на цю тему .
уривок відповіді Вернера
davfs2 завантажуватиме лише повні файли. Він не може робити додаткові речі, які зазвичай виконує rsync, і це робить rsync дуже ефективним.
davfs2 використовує локальний кеш на диску. Це зробить його більш чуйним, і ваша програма також має на цьому користь. Але для цього йому потрібно місце на диску. Ви повинні дозволити великий розмір кешу, тому rsync може виконати більшу частину своєї роботи з локальним кешем, а davfs2 буде завантажувати більшість файлів у фоновому режимі, коли rsync вже закінчився.
Вернер продовжує запропонувати наступне
Це може бути недоліком у цьому випадку. Коли rsync зчитує файл на віддаленому хості, його слід спочатку перенести davfs2 в локальний кеш (якщо його ще немає). Це може зробити процес справді і непотрібним повільним. Оскільки rsync працює лише як складна копіювальна програма у вашому випадку, може бути краще використовувати cp замість цього. У cp є можливість (-u) копіювати лише новіші файли, ніж файли у файловій системі davfs2 (= smartdrive), і не потрібно було б читати файли, а лише читати метадані файлів, наприклад mtime.
Таку команду, як "cp -pru directory / to / backup dav /", може зробити цю роботу. Не завантажуються файли (як, наприклад, rsync, але я не впевнений) (дивіться посібники з cp та rsync).
Варіанти?
Отже, як @Anthon запропонував, ви можете скористатися cp -u
методом копіювання файлів. Зрозумівши, що цей метод розглядає лише розмір файлу як фактор порівняння, тому він не є абсолютно надійним.
Ви не повинні нічого , що тільки дивиться на зміни часу при порівнянні файлів використовувати, cp -pru
. Вернер пояснює, чому в цій темі :
уривок з питання з модними часами
Якщо ви від'єднаєте файлову систему davfs2 та змонтуєте її знову через деякий пізній час, час файлів, можливо, змінився відповідно до інформації про час із сервера. Такі інструменти, як cp -pu та rsync, не можуть покладатися на ці часи, щоб визначити, які файли змінилися.
Отже, враховуючи різні проблеми, пов’язані з часом модифікації, підхід із використанням суто контрольних сум здається кращим:
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
. Я впевнений, щоcp
можна зробити це ... можливо, проклавши висновок знаходження в cp? Але я ще не знаю, як це зробити. Якщо ми придумаємо рішення, я спробуюcp -ru
. Спасибі