Rsync Bash скрипт и жесткие ссылки на файлы - PullRequest
4 голосов
/ 04 августа 2010

Я создаю скрипт bash для резервного копирования моих файлов с помощью rsync.

Все резервные копии приходят из одного каталога. Я хочу, чтобы резервные копии только новых или измененных файлов.

В настоящее время я говорю rsync для резервного копирования каталога и проверки файлов по сравнению с последней резервной копией.

То, как я это делаю, это

THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current

Я почти уверен, что у меня правильный синтаксис для этого. Каждая резервная копия будет сверяться с папкой «Текущий» и загружаться только по мере необходимости. Затем он удалит текущую папку и заново создаст символическую ссылку на самую последнюю резервную копию, которую он только что сделал.

Я получаю сообщение об ошибке при запуске сценария:

rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"

=> /Backup/Current/dgs1200series_manual_310.pdf Сбой: операция не поддерживается (45)

На хосте установлена ​​файловая система HFS, которая поддерживает жесткие ссылки. Я пытаюсь выяснить, не поддерживает ли это что-то еще, или у меня есть проблема в моем коде.

Спасибо за любую помощь

Edit:

Я могу создать жесткую ссылку на моем локальном компьютере. Я также могу создать жесткую ссылку на удаленном сервере (при локальном входе в систему) Я НЕ могу создать жесткую ссылку на удаленном сервере при подключении через afp. Даже если оба файла существуют на сервере.

Я предполагаю, что это ограничение afp.

Ответы [ 3 ]

3 голосов
/ 01 октября 2010

На всякий случай, если ваша командная строка является лишь примером: всегда указывайте каталог link-dest с absolute pathname!Это заняло у меня довольно много времени, чтобы понять ...

1 голос
/ 05 августа 2010

Я не знаю, является ли это той же проблемой, но я знаю, что rsync не может синхронизировать файл, когда местом назначения является раздел FAT32, а в имени файла есть «:» (двоеточие).[Исходной файловой системой является ext3, а местом назначения является FAT32]

Попробуйте перенастроить команду date, чтобы она не использовала двоеточие, и посмотрите, имеет ли это значение.

например

THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`
1 голос
/ 04 августа 2010

Выделяются две вещи из справочной страницы, которые стоит проверить:

Если файлы не связаны, перепроверьте их атрибуты.Также проверьте, не принудительно ли некоторые атрибуты выходят из-под контроля rsync, например, такой параметр монтирования, который спаривает root для одного пользователя или монтирует съемный диск с общим владением (например, параметр «Игнорировать владение этим томом» в OS X).

и

Обратите внимание, что в версиях rsync до 2.6.1 была ошибка, которая могла помешать правильной работе --link-dest для не суперпользователя, когда -oбыл указан (или подразумевается под -a).Вы можете обойти эту ошибку, избегая опции -o при отправке на старый rsync.

У вас включена опция "игнорировать владение"?Какая версия rsync у вас есть?

Кроме того, вы пытались вручную создать аналогичную жесткую ссылку, используя ln в командной строке?

...