LINUX.ORG.RU

rsync упрямо не хочет «не проверять» md5


0

0

На сколько я понял, эта программа начинает проверять md5 сумму, если ей это явно указать ключом -c.

Есть usb hdd, с ntfs и каталог на ext3 разделе. каталог весит около 400 GB TB. В основном, фильмы. Проверять суммы там не надо. Лишь, время и размер.

Даю ключ -vr --modify-window=1 --delete-before --stats /media/samsung/ /mnt/media1/video/ и программа уходит в долгое плавание, начиная каждый гиговый файл проверять по минуте.

В документации явным образом указано про ключ -c, который я и не ставил. Гугломет выдает, на слова checksum и проч - "если вы хотите проверить и контрольную сумму! то поставьте ключ -c" и так везде.

Как отключить длительную проверку, Люди.


И еще. Если синхронизировать не ext3 раздел с ntfs, а наоборот, то каждый раз rsync начинает заново писать все файлы на ntfs, хотя время доступа одинаковое. и опций сохранения прав не ставил.

Denisd
() автор топика
Ответ на: комментарий от spunky

uhba@adam:~$ mkdir 1 ; mkdir 2 ; mkdir 2/1 ; dd if=/dev/urandom of=1/bigfile bs=1M count=128 ; dd if=/dev/urandom of=2/1/bigfile bs=1M count=128 ; ls -l --full-time --time=access 1/bigfile ; ls -l --full-time --time=access 2/1/bigfile ; md5sum 1/bigfile ; md5sum 2/1/bigfile ; rsync --recursive --size-only --verbose 1 2 ; md5sum 1/bigfile ; md5sum 2/1/bigfile ; rsync --recursive --checksum --verbose 1 2 ; md5sum 1/bigfile ; md5sum 2/1/bigfile
128+0 записей считано
128+0 записей написано
 скопировано 134217728 байт (134 MB), 32,878 c, 4,1 MB/c
128+0 записей считано
128+0 записей написано
 скопировано 134217728 байт (134 MB), 32,7898 c, 4,1 MB/c
-rw-r--r-- 1 uhba uhba 134217728 2009-08-21 23:05:52.000000000 +0600 1/bigfile
-rw-r--r-- 1 uhba uhba 134217728 2009-08-21 23:06:24.000000000 +0600 2/1/bigfile
039bb3ea88dd575bcf87a7555664683a  1/bigfile
0ae27637b9b3ec50681b6fc00229bd65  2/1/bigfile
sending incremental file list

sent 55 bytes  received 13 bytes  136.00 bytes/sec
total size is 134217728  speedup is 1973790.12
039bb3ea88dd575bcf87a7555664683a  1/bigfile
0ae27637b9b3ec50681b6fc00229bd65  2/1/bigfile
sending incremental file list
1/bigfile

sent 134234222 bytes  received 32 bytes  29829834.22 bytes/sec
total size is 134217728  speedup is 1.00
039bb3ea88dd575bcf87a7555664683a  1/bigfile
039bb3ea88dd575bcf87a7555664683a  2/1/bigfile
uhba@adam:~$

Ну да, создал 2 файла одинакового размера и различного содержимого, 
при rsync с --size-only копирования не происходит, суммы остаются преждними,
--checksum заставляет rsync пересчитать суммы, после чего он на основании различия файлов производит их копирование.
Если делать просто rsync --recursive 1 2, то как я понимаю будет произведено обязательное копирование.

spunky ★★
()
Ответ на: комментарий от spunky

Два вывода могу по ответам сделать.

1й вывод. синхронизацию без проверки суммы делать можно, но! если понадобится все точно проверить, то все файлы перезапишутся.

то есть, второй вывод. при рекурсивной синхронизации - лучше и проще пользоваться обычным удалением старого каталога video и простым копированием каталога video с ext3.

Это из слов: "Если делать просто rsync --recursive 1 2, то как я понимаю будет произведено обязательное копирование. "

К примеру, исходный каталог video весит 350 GB. В нем отстутствует один файл и есть один новый. Но, так как при рекурсии не получится обойти полное копирование всего и вся и даже того, что не нужно, то придется так делать. То есть, тупо заноао копировать все 350 GB, так как файлы внутри каталога video лежат рекурсивно.

Еще раз прочитал man rsync. Нужных мне вещей так и не нашел.

Мои выводы явно не верны. Прошу поправить, если можно.

Denisd
() автор топика
Ответ на: комментарий от Denisd

<много написал, удалил>

так. Предположим, задача. Есть 2 папки, содержимое папок - большие файлы, неизменяемые по содержанию, неизменяемые по времени модификации, изменяемые по времени доступа. Иногда в папках появляются новые файлы.

В этом случае синхронизацию обеих можно провести с помощью вызова команды rsync с ключами --recursive и --size-only дважды, в одно направлении и в обратом. Смысл использовать ключ --window-size я тут не вижу.

По выводам:

>1й вывод. синхронизацию без проверки суммы делать можно, но! если понадобится все точно проверить, то все файлы перезапишутся. 

Синхронизацию без проверки суммы делать можно. А если понадобиться точно проверить совпадение файлов, то будут считаться их суммы. В случае несовпадения сумм - произойдёт перезапись (-c, --checksum              skip based on checksum, not mod-time & size). Несовпадение времени создания/модификации/доступа в данном случае не будет иметь роли. Несовпадение размера файлов будет являться поводом для синхронизации, несомненно. Совпадение размера файлов будет являться поводом для расчёта контрольных сумм обоих файлов, при несовпадении которых будет проведена синхронизация.

>то есть, второй вывод. при рекурсивной синхронизации - лучше и проще пользоваться обычным удалением старого каталога video и простым копированием каталога video с ext3.

А это наверное уже из-за моей ошибки. Я сказал что при использовании --recursive будет произведена обязательная синхронизация всех файлов, однако следующая проверка говорит об обратном :)

uhba@adam:~/rs_check$ mkdir 1 ; mkdir -p 2/1 ; dd if=/dev/urandom of=1/smallfile bs=1M count=1 ; dd if=/dev/urandom of=2/1/smallfile bs=1M count=1 ; md5sum 1/smallfile ; md5sum 2/1/smallfile ; touch 2/1/smallfile --reference=1/smallfile ; ls -l --full-time 1/smallfile ; ls -l --full-time 2/1/smallfile ; rsync --recursive 1 2 ; md5sum 1/smallfile ; md5sum 2/1/smallfile ; touch 2/1/smallfile --reference=1/smallfile ; ls -l --full-time 1/smallfile ; ls -l --full-time 2/1/smallfile
1+0 записей считано
1+0 записей написано
 скопировано 1048576 байт (1,0 MB), 0,253868 c, 4,1 MB/c
1+0 записей считано
1+0 записей написано
 скопировано 1048576 байт (1,0 MB), 0,253342 c, 4,1 MB/c
bfbcaa88c5853b619658ffdbf44d9359  1/smallfile
2da9cccabe247751e91cc24b911d5fad  2/1/smallfile
-rw-r--r-- 1 uhba uhba 1048576 2009-08-22 00:43:59.000000000 +0600 1/smallfile
-rw-r--r-- 1 uhba uhba 1048576 2009-08-22 00:43:59.000000000 +0600 2/1/smallfile
bfbcaa88c5853b619658ffdbf44d9359  1/smallfile
2da9cccabe247751e91cc24b911d5fad  2/1/smallfile
-rw-r--r-- 1 uhba uhba 1048576 2009-08-22 00:43:59.000000000 +0600 1/smallfile
-rw-r--r-- 1 uhba uhba 1048576 2009-08-22 00:43:59.000000000 +0600 2/1/smallfile
uhba@adam:~/rs_check$

spunky ★★
()
Ответ на: комментарий от spunky

2 spunky

попробовал синхронизировать одинаковое содержимое, с использованием стандартной проверки md4 блоков. то есть, просто:

rsync -vrh --modify-window=100 --delete-before --progress --stats /mnt/media1/iron/win/ /media/samsung/win/

файлы одинаковые. вероятно, разная дата создания. все перезаписалось заново. Я так понял, что после сей манипуляции файлы стали идентичны и по дате и по md4 и я, ради интереса, еще раз попробовать ту же самую команду. Но! все снова начало перезаписываться. все 42 гига.

тут уместно будет проигнорировать дату создания, кстати. Ведь, все равно md4 суммы проверяются. не md5, конечно. но, достаточно удовлетворительная сверка.

пытаюсь понять, по какой же причине он их переписывает все снова и снова. даже при втором проходе.

Denisd
() автор топика
Ответ на: комментарий от Denisd

Попробовал сделать один в один операцию из каталога ext3 в каталог ext3. То есть, не на ntfs. Аналогичная бяка. Файлы перезаписываются. Одинаковые ли, нет - не важно. Идет перезапись всего и вся.

Denisd
() автор топика
Ответ на: комментарий от Denisd

этак я могу и rm -r /foo/somedir;cp -r /foo2/somedir /foo/somedir юзать. В чем тогда смысл софтины.

Denisd
() автор топика
Ответ на: комментарий от Denisd

>попробовал синхронизировать одинаковое содержимое, с использованием стандартной проверки md4 блоков. то есть, просто:

>rsync -vrh --modify-window=100 --delete-before --progress --stats /mnt/media1/iron/win/ /media/samsung/win/ 

Ну нет же.

--checksum This option changes this to compare a 128-bit MD4 checksum for each file that has a matching size.

А у тебя этого ключа нет. И проверяет у тебя rsync совпадение по размеру и дате модификации. Дату создания файлов rsync не сравнивает. Проверка:

uhba@adam:~/rs_check$ rm 1 ; rm 2 ; touch 1 ; sleep 5 ; touch 2 ; echo "modification time" ; ls -l --full-time ; echo "creation time" ; ls -l --full-time --time=ctime ; touch --time=mtime --reference=1 2 ;  echo "modification time" ; ls -l --full-time ; echo "creation time" ; ls -l --full-time --time=ctime ; rsync --stats 1 2
modification time
итого 0
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:31.000000000 +0600 1
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:37.000000000 +0600 2
creation time
итого 0
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:31.000000000 +0600 1
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:37.000000000 +0600 2
modification time
итого 0
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:31.000000000 +0600 1
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:31.000000000 +0600 2
creation time
итого 0
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:31.000000000 +0600 1
-rw-r--r-- 1 uhba uhba 0 2009-08-22 01:44:37.000000000 +0600 2

Number of files: 1
Number of files transferred: 0
Total file size: 0 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 15
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 22
Total bytes received: 12

sent 22 bytes  received 12 bytes  68.00 bytes/sec
total size is 0  speedup is 0.00
uhba@adam:~/rs_check$

Файлы создаются с промежутком в 5 секунд. Первоначально у каждого из них одно время создания и модификации. Потом с помощью touch устанавливаем у них одинаковое время модификации, после этого rsync не производит копирования данных, т.к. наблюдает совпадающие размеры и даты модификации.

Почему эта сволочь у тебя начинает копировать всё заново я не могу пока понять.

spunky ★★
()
Ответ на: комментарий от spunky

>И проверяет у тебя rsync совпадение по размеру и дате модификации.

По тому, как видно, как он читает 2х гиговый файл, а не перелистывает их все, я бы так не сказал. 40 гигов преверяются порядка 15 минут, если с usb-hdd на диск обычный синхронизировать. И это без -c ключа.

Если же на usb-hdd вести синхронизацию, то все тупо перезаписывается. По gkrellm'у вижу. чтение там у меня - просто кривая линия. запись заполненная цветом кривая. да и в отчете rsync - 40... GB sent.

Повторюсь. После такого деяния я сделал идентичную операцию и все снова копироваться начало. снова 40 GB sent. Казалось бы - после синхронизации все одинаковым стать должно - нет же. странно.

Denisd
() автор топика
Ответ на: комментарий от spunky

>Файлы создаются с промежутком в 5 секунд. Первоначально у каждого из них одно время создания и модификации. Потом с помощью touch устанавливаем у них одинаковое время модификации, после этого rsync не производит копирования данных, т.к. наблюдает совпадающие размеры и даты модификации.

>Почему эта сволочь у тебя начинает копировать всё заново я не могу пока понять.

--modify-window=1000. хоть, миллион ставь. все равно перезапись идет.

можно даже не ntfs. как и говорил. пробовал на ту же партицию (ext3) синхронизировать так все. аналогично все. копирование [всего]. снова и снова.

Denisd
() автор топика
Ответ на: комментарий от Denisd

помогло вот что:

find /media/samsung/win/ -exec touch {} \;

find /media/samsung/win/ -exec touch {} \;

буду теперь делать после каждой синхронизации.

неудобно, блин ( а придется.

Denisd
() автор топика
Ответ на: комментарий от Denisd

find /from/ -exec touch {} \; find /to/ -exec touch {} \; нужно сделать лишь в начале. Один единственный раз для опр. каталога, а потом просто ключ -t в rsync ставить.

Denisd
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.