rsync ігнорує власника, групу, час та візи


67

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

Відповіді:


93

Я думаю , що ви можете використовувати -no-варіанти , rsyncщоб НЕ копіювати права власності або права доступу файлів ви sync'ing.

Уривок сторінки rsync Man

--no-OPTION
       You may turn off one or more implied options by prefixing the option 
       name with "no-".  Not all options may be pre‐fixed  with  a  "no-":  
       only options that are implied by other options (e.g. --no-D, 
       --no-perms) or have different defaults in various circumstances (e.g. 
       --no-whole-file, --no-blocking-io, --no-dirs).  You may specify 
       either the short or the long option name after the "no-" prefix (e.g. 
       --no-R is the same as --no-relative).

       For example: if you want to use -a (--archive) but don’t want -o 
       (--owner), instead of converting -a into -rlptgD, you could specify 
       -a --no-o (or -a --no-owner).

       The order of the options is important:  if you specify --no-r -a, the 
       -r option would end up being turned on,  the opposite  of  -a  
       --no-r.   Note  also  that the side-effects of the --files-from 
       option are NOT positional, as it affects the default state of several 
       options and slightly changes the meaning of -a (see the  --files-from
       option for more details).

Право власності та дозволи

Переглядаючи сторінку чоловіка, я вважаю, що ви хочете використовувати щось подібне:

$ rsync -avz --no-perms --no-owner --no-group ...

Щоб видалити файли, які не існують, ви можете використовувати --deleteперемикач:

$ rsync -avz --no-perms --no-owner --no-group --delete ....

Мітки часу

Щодо часової позначки, я не бачу способу зберегти це, не змінюючи те, як ви зробите порівняння файлів SOURCE та DEST. Ви можете сказати rsyncігнорувати часові позначки за допомогою цього перемикача:

-I, --ignore-times
       Normally  rsync will skip any files that are already the same size 
       and have the same modification timestamp.  This option turns off this 
       "quick check" behavior, causing all files to be updated.

Оновлення

Для часових позначок --no-timesможна робити те, що ви шукаєте.


при використанні --no-time, я все ще бачу безліч файлів (з деталізованими змінами), позначеними за допомогою >f..T...яких підказує, що файлові позначки та час модифікації встановлюються за призначенням, чого я намагаюся уникати.
Майкл

17

Я думаю, що простіше уникнути варіанту -a

$ -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

і встановіть лише потрібні варіанти.

Якщо вам подобаються всі параметри, але не модифікації користувача -o , group -g , time -t та дозволів -p, щоб ви могли відняти ці чотири варіанти з еквіваленту архіву.

$ -rlD

Для видалення файлів за призначенням скористайтеся опцією --delete .

На ваше запитання: Але я думаю, що всі файли будуть перевірені - rsync не може передавати / перевіряти лише ті файли, які змінилися лише за змістом.


-lпризначений для посилань, -Dпристроїв (трактуються так само --specials), я думаю, що -rодного достатньо, якщо ми говоримо про вміст
sdkks

7

Я думаю, що ти шукаєш варіант

rsync -r --size-only

зі сторінки чоловіка:

--size-only
   This  modifies  rsync’s  "quick  check"  algorithm  for finding files that need to be transferred,
   changing it from the default of transferring files  with  either  a  changed  size  or  a  changed
   last-modified  time  to  just  looking  for  files that have changed in size.  This is useful when
   starting to use rsync after using another mirroring  system  which  may  not  preserve  timestamps
   exactly.

Якщо ви дійсно хочете видалити файли, відсутні в джерелі використання dir --delete


4

Ви можете змусити rsync ігнорувати перевірки на основі часу та розміру модного файлу та використовувати підхід на основі chksum за допомогою перемикача "-c".

-c, --checksum              skip based on checksum, not mod-time & size

Це означає, що йому потрібно порівнювати весь файл фрагментами (і переносити відповідні метадані вперед і назад між джерелом та пунктом призначення, щоб це відбулося) незалежно від того, збігаються час і розмір файлу, але передаватимуть лише ті фрагменти, які відрізняються між джерелом і пунктом призначення.

Використання цього перемикача спільно з іншими перемикачами, запропонованими іншими, повинно обмежувати скопійоване (лише копіювання того, що змінилося), і має перевагу робити перевірку узгодженості між джерелом та пунктом призначення, Але це займе більше часу, залежно від швидкості зв'язку, оскільки він повинен зрізати фрагменти файлів з обох сторін і порівняти).


Я сумніваюся, що це на увазі ОП. Здається, проблема не пов’язана з тим, як були обрані файли, але атрибути скопійовані, і обрана (більшість, яка також отримала перевагу) відповідь вже охоплює це.
Джулі Пелтьє

-3

Знизу команда спрацювала б ідеально, я перевірив її на власні вимоги, вона займе лише зміну вмісту.

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