это может быть не тот ответ, который вы ищете. Да, на ваш первый вопрос он остается, но не думайте, что это будет дорого, скажем, (слишком много переменных ). По второму вопросу не знаю. Вы можете попробовать "протестировать" добавление команд для очистки памяти к вашей процедуре, которую вы выполняете, когда вы контролируете нагрузку на систему.
синхронизация; эхо 1 > /proc/sys/vm/drop _кеши
синхронизировать; echo 2 > /proc/sys/vm/drop _кеши
синхронизировать; echo 3 > /proc/sys/vm/drop _кеши
Если вам действительно нужно использовать абсолютные пути, вам следует использовать -P
для обеих команд --create
и --compare
.
-P, --absolute-names
Don't strip leading slashes from file names when creating archives.
Пример:
$ tar -cvPf a.tar /home/user/test_file
/home/user/test_file
$ tar -dvPf a.tar /home/user/test_file
/home/user/test_file
Или вы можете использовать -C
, чтобы изменить каталог перед сравнением.
-C, --directory=DIR
Change to DIR before performing any operations. This option is
order-sensitive, i.e. it affects all options that follow.
Пример:
tar -cvf a.tar /home/user/test_file
tar: Removing leading `/' from member names
/home/user/test_file
tar -dvf a.tar -C/ home/user/test_file
home/user/test_file
Начальный /
мог быть удален, поэтому путь не может быть найден в архиве.
При использовании стандартного GNU tar
и добавлении файлов /absolute/path/file.ext
начальный /
удаляется, и файл внутри архива будет называться absolute/path/file.ext
.
Обычно это записывается в stderr при архивировании файлов, пожалуйста, проверьте этот вывод, он может выглядеть как в этом примере:
# tar -cvf test.tar /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd
# tar -tf test.tar
etc/passwd
Поэтому попробуйте запустить
tar --compare --file myArchive.tar.xz path/to/my/dir
пропустить первый символ пути, если это /
.