rsync не працює між NTFS / FAT та EXT


14

У мене є музика, яку я граю в своєму автомобілі, з USB-накопичувача FAT32. Папка, яку я використовую для розміщення пісень, зберігається на моєму жорсткому диску EXT4. Я регулярно додаю / видаляю / перемальовую пісні, а інколи хочу rsyncзмінити USB-накопичувач. Але з незрозумілої причини (можливо, дозволів?) rsyncКожен раз копіюйте всі файли, а не лише змінені. Я дзвоню rsyncтак:

rsync -vrlptgD source dest

Як я можу змусити його працювати так, як я хочу (тобто знати, коли файл не змінено і не копіювати)?

Відповіді:


18

Відповідь Хав'єра Рівера працює, але для rsync потрібно досить багато часу, щоб перевірити та порівняти всі контрольні суми файлів. Я виявив, що використання наступного варіанту краще для мене працює:

rsync -rtv --modify-window=1 /source /dest

--modify-window=1Перемикач дозволяє для дисперсії ± 1s на тимчасові мітки. Якщо ввімкнено цю опцію, порівняння часових позначок стане більш м'яким і перегляне мінусові різниці у часі між файловими системами NTFS / FAT та Unix.

Джерело (нім.): Http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: Зауважте, що DST спричинить повну передачу файлів двічі на рік. Дивіться тут для отримання більш детальної інформації та можливих рішень.


Це чудово. Я знайшов також можливість --iconvкорисна при переході від вихідного Linux Цілий MacOS
Вім

2
Мені чомусь потрібно користуватися, modify-window=2оскільки =1все-таки копіюються всі файли. Копіювання з NTFS в FAT32. Після цього все добре.
Люк

Я додав --size-onlyпрапор, щоб пропустити файли, які відповідають за розміром
alexandre1985

1
@ alexandre1985: це опустить файли, які змінюють їхній вміст, але не їх розмір. Ви повинні використовувати його лише тоді, коли ви хочете створити резервну копію файлів, які завжди змінюють розмір, коли вони змінюють вміст, наприклад, тому що дані додаються лише до них, але ніколи не перезаписуються.
Девід Фоерстер

11

Тимчасові позначки у FAT32 занадто відрізняються від unix, щоб покластися на них, щоб перевірити зміни файлів, слід також використовувати перемикач -c, він змусить rsync порівняти всі файли для виявлення змін, а не покладатися на часові позначки. Він буде працювати, але це повільніше.

Нарешті, у вашій команді є кілька варіантів, які не можуть працювати з файловими системами FAT32.

  • -Я збережу посилання, FAT32 не має поняття посилань
  • -p спробує зберегти дозвіл, знову ж таки без дозволів на FAT32
  • -спробує зберегти часові позначки модифікації, на FAT32 є лише одна часова марка
  • -g спробує зберегти групову власність, знову не підтримується FAT32
  • -D спробує зберегти спеціальні файли та пристрої, ви тепер, що тут приходить.

Як зауважує htorque, недійсні варіанти вам не зашкодять, вони просто нічого не зроблять. Але ви повинні додати -c перемикач.

Це:

rsync -vrc source dest

повинен працювати (принаймні, це працює на моєму комп’ютері).


3

У мене виникли подібні проблеми під OSX, і відповідь Glutanamate не допомогла. Деякі файли відрізняються на годину; це може бути тому, що я схильний перетинати часові пояси порівняно часто. Інші файли вимикаються на день або навіть місяць. Я не впевнений, чому це. Перевірка суми деяких файлів із широко різними часовими позначками показує, що вони справді однакові.

У будь-якому випадку, схоже, що --size-onlyваріант, який говорить rsyncпро ігнорування часових міток, буде працювати для моїх цілей. -c/ --checksum(як згадував Хав'єр) також працює, але займає трохи більше часу. Я приурочила це, і порівняти контрольні суми для ГБ або близько цього у підкаталозі, з яким я працюю, знадобилося близько хвилини. Звичайно швидкість, з якою це відбувається, буде залежати від найповільнішого приводу в системі; в моєму випадку це SD-карта в моєму телефоні. Однак це було після того, як я вже робив деякі файлові маніпуляції (включаючи контрольну суму), тому багато файлів, можливо, вже були скопійовані в кеш оперативної пам'яті.


1

Також слід уникати використання популярного варіанту -a. Моя рекомендація щодо FAT32 є

 rsync -vrc --delete --progress --no-p source  destination

--no-p: дозволу немає

--delete: видаліть незрівняні файли та папки в пункті призначення (якщо ви дійсно цього хочете)

- прогрес: показує прогрес під час передачі. Це добре для великих файлів.


1
Зазначте мене, хоча в додаток до цього -vrc, я теж роблю-vrcz
Антоній

0

Це занадто багато прапорів (-vrlptgD), які ви використовуєте. Пам'ятайте, rsync - це утиліта Linux і не працює ефективно з Fat32 та NTFS.

Вам доведеться полювати на хитрощі, щоб мати можливість ним користуватися.

Спробуйте:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

Більше інформації тут

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