rsync „Operacja niedozwolona”

9

Próbuję tak prosty rsync na dysk twardy USB, polecenie jest

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

Używam tego jako root.

ale otrzymuję wiele błędów, które wydają się odnosić do niewystarczających uprawnień:

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]

To jest wersja 3.0.7. Próbowałem użyć opcji --super bez efektu. Jakieś pomysły?

Tim Zaklinacz
źródło
Jaki jest system plików na dysku USB?
Caleb
Czy dysk zewnętrzny jest sformatowany jako FAT (32)? To nie działałoby, ponieważ FAT nie zna atrybutów własności plików.
Sven
@Caleb Domyślam się, że to FAT, ale jak mam to powiedzieć?
Tim the Enchanter
Bieganie mount | grep /mnt/exthdpowinno ci powiedzieć.
Caleb
@Caleb mówi vfat
Tim the Enchanter

Odpowiedzi:

14

System plików FAT (który system Linux nazywa vfat) nie jest w stanie przechowywać niektórych danych dotyczących uprawnień i własności przechowywanych na temat plików po stronie Linux.

Dostępne opcje to:

  • Sformatuj dysk za pomocą ext3 / 4 lub innego systemu plików, który obsługuje te atrybuty. Myślę, że nawet NTFS wykona to zadanie, jeśli udostępniasz system Windows.
  • Zachowaj te dodatkowe właściwości za pomocą --fake-superopcji, aby rsync zapisał xattrs w pliku zamiast używać atrybutów systemu plików
  • Zignoruj ​​błąd, te właściwości zostaną po prostu utracone.
  • Zawiń zestaw danych w plik tar i umieść go w systemie FAT. Wszystkie atrybuty zostaną zachowane i będą obecne, jeśli kiedykolwiek je wyodrębnisz.
Caleb
źródło
--fake-super też nie działa, chociaż błąd zmienia się z Operacja niedozwolona (1) na Operacja nieobsługiwana (95)
Tim The Enchanter
Hm Możesz użyć, --no-owneraby nie próbować dopasować właściciela. (FAT nie ma własności właściciela) i możliwe --no-perms.
Caleb
dzięki za pomoc, naprawdę dobrze, wciąż nie działa, chociaż błąd zmienił się ponownie, każda linia błędu ma teraz rsync: failed to write xattr user.rsync.%statna początku.
Tim the Enchanter
3

Rsync próbuje wykonać operację (chown i dowiązanie symboliczne), na którą system plików nie pozwala lub nie może wykonać. Domyślam się, że twój zewnętrzny HD ma system plików FAT.

Jeśli chcesz zrobić właściwą kopię zapasową, możesz użyć tar.

Sgaduuw
źródło
1
Lub porządny system plików.
womble
FAT bardziej przypomina repozytorium plików, a nie system plików. :-)
Janne Pikkarainen
Osobiście - nienawidzę rsync. Widziałem zbyt wiele błędów różnego typu podczas używania go do kopiowania plików i katalogów z mojego MAC do udziału sieciowego na moim routerze, który używa systemu plików NFS. Musiałem także wielokrotnie formatować ten dysk, ponieważ rsync utworzył pliki, które zostały zablokowane i nie można ich usunąć. Powodem, dla którego próbowałem używać rsync vs. cp było to, że obsługuje filtry wykluczania i powinien być szybszy. Na koniec napisałem kilka bardzo prostych klas Java - Copy.java i CopyJob.java, która jest Runnable do obsługi wielowątkowości i dodała obsługę filtrów ... :)
jrobertsz66