Поскольку вы скопировали файлы, используя rsync
, а затем сравнили два набора файлов, используя diff
, и поскольку diff
не сообщает о различиях, два набора файлов идентичны.
Разница в размерах, вероятно, может быть объяснена размерами фактических узлов каталогов в двух структурах каталогов. В некоторых файловых системах каталог не усекается при удалении файла или подкаталога, в результате чего узел каталога остается немного больше, чем требуется на самом деле.
Если в какой-то момент вы сохранили много файлов, которые впоследствии были удалены, это могло привести к тому, что остались большие узлы каталогов.
Пример:
$ mkdir dir
$ ls -ld dir
drwxr-xr-x 2 kk wheel 512 May 11 17:09 dir
$ touch dir/file-{1..1000}
$ ls -ld dir
drwxr-xr-x 2 kk wheel 20480 May 11 17:09 dir
$ rm dir/*
$ ls -ld dir
drwxr-xr-x 2 kk wheel 20480 May 11 17:09 dir
$ du -h.
20.0K ./dir
42.0K .
$ ls -R
dir
./dir:
Обратите внимание, что хотя я удалил 1000 созданных файлов, каталог dir
по-прежнему занимает 20 КБ.
Вы можете попробовать:
until host example.com > /dev/null ;do sleep 1; done
Пара вещей:
$ dig +answer non-existent-record-$(date +%F).com && echo "Shouldn't see this"
# => Shouldn't see this
Вместо этого, как говорит Мирча, используйте /usr/bin/host
. Кроме того, вы можете проверить, возвращает ли преобразователь пустое значение, используя [ ! -z "$(dig +short example.com.)" ]
. Существует очень тонкая разница в поведении между host
и dig, когда есть запись AAAA или запись MX, но это может не повлиять на вас.
do :
используйте /usr/bin/true
вместо :TL;DR, ответ Мирчи работает для меня, но просто чтобы быть другим, вот мое мнение. Он отличается тем, что не останавливается ни на секунду при каждом тесте, который может быть или не быть тем, что вам нужно, и не завершается даже при наличии записей AAAA или MX.
until [ ! -z "$(dig +short example.com)" ]; do true; done