Важной причиной того, что time
является зарезервированным словом в bash, является то, что это копия понятия из ksh
.
ksh
, конечно, любит разрешать time
делать больше, чем может сделать внешняя команда или встроенный модуль, и любит делать тайминг для временного конвейера.
BTW: Тот факт, что time
является зарезервированным словом в ksh, был бы ошибкой соответствия POSIX, но парсер из ksh
проверяет, начинается ли следующее слово с -
и в таком случае просто вызывает внешнюю команду /usr/bin/time
. Учитывая, что POSIX
требует вызова time -p command
для POSIX
соответствия, все поведение от ksh
является POSIX
совместимым.
BTW: [[
является зарезервированным словом
в ksh
, чтобы сделать [[ ... ]]
частью синтаксиса оболочки. Это позволяет избежать необходимости использовать экранирование оболочки (аналогично конструкции case
) для шаблонов и позволяет использовать операторы >
и <
как арифметические операторы, а не как перенаправления ввода-вывода.
Я перешел с rsnapshot на backintime именно из-за этой проблемы. В backintime каталоги именуются по дате. Они оба используют жесткие ссылки, но backintime немного умнее, так как если ничего не меняется, он не беспокоится о создании всех ссылок. Одно из отличий - backintime изменяет разрешения файлов на "только чтение" и сохраняет их в отдельном файле.
Не существует «лучшего пути».Все зависит от ваших настроек и требований.
Один из способов, который также работает, если каталоги резервных копий содержат много файлов, - это использовать моментальные снимки на более низком уровне и отправлять их на удаленный сервер. ZFS может это сделать и, возможно, LVM, но я никогда этим не пользовался. Вы не указали свою файловую систему или используете ли вы диспетчер томов, в зависимости от того, что это может быть вариант.
В любом случае можно безопасно выполнить синхронизацию каталога резервных копий с удаленным сервером. Если у вас много файлов, это менее эффективно, чем отправка снимков на уровне блоков.