rsync «Операция не разрешена»

9

Я пытаюсь так просто rsync на жесткий диск USB, команда

rsync -az --modify-window=2 /home /mnt/exthd/tmp/

Я запускаю это как root.

но я получаю много ошибок, которые, похоже, связаны с недостаточными правами доступа:

rsync: chown "/mnt/exthd/tmp/home/someuser" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bashrc" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bashrc" failed: Operation not permitted (1)
rsync: symlink "/mnt/exthd/tmp/home/guest/fred2" -> "fred" failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1042) [sender=3.0.7]

Это версия 3.0.7. Я попытался использовать опцию --super безрезультатно. Любые идеи?

Тим Чародей
источник
Что такое файловая система на USB-диске?
Калеб
Внешний диск отформатирован как FAT (32)? Это не сработает, так как FAT не знает атрибутов владения файлами.
Свен
@ Калеб Я бы догадался, что это FAT, но как мне сказать?
Тим Заклинатель
Бег mount | grep /mnt/exthdдолжен сказать тебе.
Калеб
@Caleb говорит vfat
Тим Заклинатель

Ответы:

14

Файловая система FAT (которую Linux монтирует как vfat) не может хранить некоторые данные о правах доступа и владении, которые хранятся в ваших файлах на стороне Linux.

Ваши варианты выглядят так:

  • Отформатируйте диск с помощью ext3 / 4 или другой файловой системы, которая поддерживает эти атрибуты. Я думаю, что даже NTFS сделает эту работу, если вы поделитесь с Windows.
  • Сохраните эти дополнительные свойства, используя --fake-superопцию, чтобы rsync записывал в файл xattrs вместо использования атрибутов файловой системы.
  • Игнорируйте ошибку, эти свойства будут просто потеряны.
  • Оберните ваш набор данных в файл tar и поместите файл tar в систему FAT. Все атрибуты сохраняются и будут присутствовать, если вы когда-либо извлечете его.
Калеб
источник
--fake-super также не работает, хотя ошибка меняется с Операция не разрешена (1) на Операция не поддерживается (95)
Тим Чародей
Гектометр Вы можете использовать, --no-ownerчтобы не пытаться установить владельца, чтобы соответствовать. (FAT не имеет собственности владельца) и возможно --no-permsтакже.
Калеб
спасибо за вашу помощь, действительно хорошо, все еще не работает, хотя ошибка снова изменилась, каждая строка ошибки теперь имеет rsync: failed to write xattr user.rsync.%statв начале.
Тим Заклинатель
3

Rsync пытается выполнить операцию (chown и symlink), которую файловая система не разрешает или не может выполнить. Я предполагаю, что ваш внешний HD имеет файловую систему FAT.

Если вы хотите сделать правильное резервное копирование, вы можете использовать tar.

Sgaduuw
источник
1
Или приличная файловая система.
Уомбл
FAT больше похож на хранилище файлов, а не на файловую систему. :-)
Янне Пиккарайнен
Лично я ненавижу rsync. Я видел слишком много ошибок разных типов при использовании его для копирования файлов и каталогов с моего MAC на сетевой ресурс на моем маршрутизаторе, который использует файловую систему NFS. Мне также пришлось переформатировать этот диск несколько раз, потому что rsync создавал файлы, которые были заблокированы и не могли быть удалены. Причина, по которой я продолжал пытаться использовать rsync vs cp, заключалась в том, что он поддерживает фильтры исключения и должен быть быстрее. В конце я написал пару очень простых классов Java - Copy.java и CopyJob.java, которые являются Runnable для поддержки многопоточности и добавили поддержку фильтров ... :)
jrobertsz66