Назад | Перейти на главную страницу

Жесткие ссылки Rsync при разном времени модификации

У меня большой удаленный каталог A и локальный каталог B которые почти идентичны по содержанию, хотя многие времена модификации могли быть изменены путем копирования файлов и т. д. Я хочу создать локальный каталог C с идентичным содержанием A, жесткие ссылки на файлы в B всякий раз, когда контент такой же. Меня не волнует, что время модификации будет одинаковым.

Возможно ли это с rsync?

Для тестового примера у меня есть следующая локальная настройка (я предполагаю, что поведение не изменится, когда A находится на удаленном сервере):

[Compputer:/tmp] % cat A/a B/a
foo
foo

[Compputer:/tmp] % rsync -rIv --link-dest=$PWD/B/ /tmp/A/ /tmp/C  
building file list ... done
created directory /tmp/C
./
a
b

sent 169 bytes  received 71 bytes  480.00 bytes/sec
total size is 8  speedup is 0.03

[Compputer:/tmp] % ls -lT A B C
A:
total 16
-rw-r--r--  1 ken  wheel  4 May 28 00:01:15 2016 a
-rw-r--r--  1 ken  wheel  4 May 28 00:01:22 2016 b

B:
total 8
-rw-r--r--  1 ken  wheel  4 May 28 00:01:34 2016 a

C:
total 16
-rw-r--r--  1 ken  wheel  4 May 28 20:46:31 2016 a
-rw-r--r--  1 ken  wheel  4 May 28 20:46:31 2016 b

Заметь a не привязан жестко.

Нашел решение: -c switch запрашивает сравнение контрольной суммы для каждого файла. Это игнорирует последние измененные даты, и rsync (обычно) лучше обнаруживает идентичные файлы (за счет чтения каждого файла полностью, но при этом нет необходимости передавать по сети).

[Compputer:/tmp] % rsync -rcv --link-dest=$PWD/B/ A/ C
building file list ... done
created directory C
./
b

sent 150 bytes  received 48 bytes  396.00 bytes/sec
total size is 8  speedup is 0.04
[Compputer:/tmp] % ls -l A B C
A:
total 16
-rw-r--r--  1 ken  wheel  4 May 28 00:01 a
-rw-r--r--  1 ken  wheel  4 May 28 00:01 b

B:
total 8
-rw-r--r--  2 ken  wheel  4 May 28 00:01 a

C:
total 16
-rw-r--r--  2 ken  wheel  4 May 28 00:01 a
-rw-r--r--  1 ken  wheel  4 May 30 21:33 b

В 2 перед a файлы в B/ и C/ указывает на то, что они жестко связаны.