В ударе, .
и source
функционально выполните то же задание - выполнение сценария в текущей оболочке.
./foo
выполнения в другой оболочке, как Ваши ветвления оболочки перед выполнением.
Если Ваш сценарий должен быть портативным, всегда используйте .
. source
синоним удара, но он не существует в POSIX.
ProblemsВ этой статье [112685] есть несколько полезных советов как минимум для [112686]rsync[112687]:
Using [113187]rsync --sparse works[113188], но приводит к огромному количеству ненужных записей на диск. Изменение 10 байт на длину 50 Гб (используется 1 Гб) должно привести к записи только одного или двух блоков, это приводит к записи 1 Гб. Это медленно, и, возможно, не очень хорошо для долговечности дисков.
Использование [113189]rsync --inplace[113190] работает, но создает не разреженные файлы.Вы не можете использовать --sparse и --inplace одновременно :-( это запрещено rsync.
rsync: --sparse нельзя использовать с --inplace
Solution
Если вы используете --inplace для обновления уже существующего разреженного файла, файл останется разреженным и будет записано только небольшое количество блоков. Только когда rsync --inplace создает файл, это делает его не разреженным.Таким образом, решение заключается в создании соответствующего, корректно удлиненного, пустого, редкого файла на целевой машине для каждого файла на исходной машине - если файл еще не присутствует на целевой машине.
Тогда rsync --inplace будет работать по назначению, оставляя разреженные файлы разреженными, и только записывая измененные блоки на диск.
Итак, если я правильно прочитал, вы хотите сначала создать пустой разреженный файл на целевой машине. Вы можете сделать это с помощью
Затем вы можете использовать [112704]rsync --inplace[112705] для копирования файлов. Это необходимо сделать только один раз.
В той же статье предлагается использовать [112706]Virtsync[112707], который являетсякоммерческим инструментом командной строки Linux стоимостью $49 для синхронизации содержимого огромных файлов (таких как образы дисков и баз данных виртуальной машины).
Это может быть лучшим решением, если вы готовы заплатить за него, так как он написан специально для такого рода ситуаций.[112210].
Однако использование GNU [112840]tar[112841] для их извлечения работает, но тогда GNU tar не может обрабатывать некоторые расширенные атрибуты, которые поддерживает bsdtar.
Так
работает, пока файлы не имеют расширенных атрибутов или флагов.
Он все еще не работает для файлов, которые полностью разрежены (только нули), так как [112842]FS_IOC_FIEMAP[112843] ioctl затем возвращает 0, и выглядит так, будто [112844]bsdtar[112845] не справляется с этим должным образом (еще одна ошибка? ).