Збереження наявних символьних посилань із функцією rsync


10

Я використовую rsync (1) для оновлення локального сховища debian. Нещодавно диск, який я використовую для його зберігання, почав бракувати місця, тому я вирішив використати посилання, щоб дозволити мені перенести деякі каталоги на інший диск подібного розміру.

На жаль, схоже, що rsync видаляє символьні посилання та заправляє майже повний диск. Після деяких пошуків я виявив --keep-dirlinksможливість rsync, який, начебто, зроблений спеціально для вирішення моєї проблеми.

Тільки це не так. Символьні посилання на ціль все ще видаляються.
Ось моя команда rsync:

rsync --recursive --keep-dirlinks --links --hard-links --times --verbose \
 --delete --delete-excluded $EXCLUDE $SOURCE_EXCLUDE \
 $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/

ВИКЛЮЧЕННЯ розширюються, щоб усунути велику кількість архітектур, які мене не цікавлять --exclude binary-alpha/ --exclude disks-alpha .... Перед запуском rsync мій каталог пулу виглядає так:

lrwxrwxrwx  1 root root   23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib
drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main
lrwxrwxrwx  1 root root   24 2014-09-22 13:58 non-free -> /u2/debian/pool/non-free

Як тільки rsync запускається, я отримую це:

receiving incremental file list
deleting non-free
deleting contrib
./
contrib/
contrib/a/

І так далі, і символьні посилання замінюються на каталоги, наповнені файлами.

Чи заважають деякі інші параметри rsync --keep-dirlinks? З якими я не можу поєднувати? Або порядок варіантів викликає мою проблему?

Відповіді:


7

Параметри --deleteта --delete-excludedпараметри перешкоджають вашому плану, оскільки вони помічають, що символьне посилання відсутнє у джерелі, і таким чином видаляє його.

Це трапляється лише тоді, коли ви скажете rsyncскопіювати весь каталог із source/ targetпозначеннями (косою косою рисою після джерела). Якщо ви використовуєте source/* targetнатомість, оболонка розширить список файлів та каталогів, які потрібно скопіювати, і цього не станеться (але спробуйте --dry-runспочатку).

Однак замість цієї тендітної установки я рекомендував би поєднати два диски за допомогою LVM, щоб утворити один великий об'єм, не потребуючи такого вигадування.


Дякую! Я змінив сценарій і, здається, працює. Це дасть мені трохи часу - диск все ще буде, як правило, заповнюватися, але я встигаю змінити речі. Ви маєте рацію щодо поєднання двох з LVM. Я вже думав над цим, але перетягую ноги, оскільки це означає перенести речі, а потім перенести їх назад. Хоча швидше, ніж пізніше, хоча, я думаю.
unkilbeeg

У мене була подібна проблема, яку було вирішено за допомогою --keep-dirlinks без опції -a, яку я використовував. "Незначне" роздратування, що стосується третього абзацу, файлові системи, якими я користуюсь, є 64-байтними "дисками SAN". Незважаючи на те, що можливо, множини можуть бути об'єднані в ще більші, скажімо, 256 терабайтних накопичувачів, я вважаю, що у адміністраторів є причини для розмірів у нас. Іноді те, що схоже на "хитрість", - це просто розробка способу жити з тим, що маєш.
користувач1683793

Моє остаточне рішення - нове обладнання. Оригінальна машина була достатньо старою, щоб підтримувати лише диски IDE, а найбільший накопичувач, який ви могли отримати в ті часи, був 512G.
unkilbeeg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.