gsutil rsync: передаваемое количество отличается от `du` - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь сделать резервную копию большого каталога (несколько терабайт) в облаке Google, используя следующую команду:

gsutil -m rsync -r -e local_dir/ gs://target/bucket

В итоге, запустите параллельно (-m), рекурсивно (-r) выполнить поиск в каталоге local_dir/ (не переходить по символическим ссылкам -e) и сохранить его удаленно в корзине gs://target/bucket.

Эта операция успешно завершена:

[666.4k/666.4k files][ 6.3 TiB / 6.3 TiB] 100% Done
Operation completed over 666.4k objects/6.3 TiB.

Одна вещь, которая меня беспокоит, это то, что размер папки при запуске меняется по-разному du:

$ du --max-depth 1 -h local_dir/
...
7.6T    local_dir

Может кто-нибудь объяснить, откуда исходит расхождение более 1 ТиБ?по сравнению с тем, что gsutil передано и что du сообщает?

1 Ответ

0 голосов
/ 18 октября 2018

Часть различий заключается в том, что Linux du сообщает в единицах терабайтов (10 ^ 12 байт), в то время как gsutil cp сообщает в единицах тебибайтов (2 ^ 40).Таким образом, модули Linux du в 1,0995 раза больше, чем модули gsutil cp.Кроме того, каталоги и inode занимают место за пределами байтов данных файла.Например, если вы выполните следующие команды:

mkdir tmp
cd tmp
for f in {1..1000};do
touch $f
done
du -h

, он сообщит об использовании 24 КБ, даже если каждый из файлов пуст (в среднем 2,4 КБ на индекс).И если вы удаляете временные файлы и запускаете du -s в каталоге, он потребляет 4 Кбайт.Таким образом, ваши файлы 666,4 КБ будут занимать приблизительно 16 МБ плюс столько же, сколько содержится в каталогах.Кроме того, используемый объем может отличаться в зависимости от типа файловой системы, которую вы используете.Числа, которые я привел выше, относятся к файловой системе ext4, работающей в Debian Linux.

...