Есть ли какая-нибудь программа, которая может копировать разреженный файл (/ var / log / lastlog) по ssh так быстро, как cp (на локальном компьютере)?

Это вопрос старшинства. Расширения скобок оцениваются перед переменной:

$ foo="10"
$ echo {1.."$foo"}
{1..10}

Или, более подробно:

$ set -x
$ echo {1.."$foo"}
+ echo '{1..10}'
{1..10}

Это документировано в man bash:

Порядок расширений следующий: расширение скобок; расширение тильды, расширение параметров и переменных, арифметическое расширение, и команда подстановка (выполняется слева направо); разбиение слов; и расширение имени пути.

Другими словами, когда вы попытаетесь использовать {1..$foo}, первое, что сделает bash, это попытается оценить расширение скобки. В этот момент переменная еще не заменена своим значением, она просто $foo. Поэтому то, что видит bash, эквивалентно {1..SOMESTRING}:

$ echo {1..SOMESTRING}
{1..SOMESTRING}

Поскольку это вопрос порядка, в котором оболочка выполняет определенные операции, обходного пути нет. Вы просто не можете использовать переменные таким образом в расширении скобок. Вам придется найти другой способ сделать это. Например, используйте seq:

for i in $(seq 1 "$REPEAT"); do
    echo "${MESSAGE}"
done

Or:

for((i=0;i<=$REPEAT;i++)); do 
    echo "${MESSAGE}"
done
0
21.03.2019, 21:56
1 ответ

Не волнуйтесь, у вас все отлично получается с rsync -S.

Причина, по которой cpнамного быстрее, заключается в том, что он на самом деле не копировал его. У этого может быть много причин, первые две, которые я могу придумать, это:

  • Система решила, что файловая система не нуждается в немедленной синхронизации, а копирование произойдет позже в фоновом режиме (или сразу при запускеsync). См. man syncдля получения дополнительной информации.

  • У вас есть файловая система с функциями типа cow/dedup -. В результате cpсоздаст то, что я бы назвал «замаскированной жесткой ссылкой». В этом случае копия никогда не будет сделана физически, данные в файле просто получат дополнительное имя (как настоящая жесткая ссылка ). Но (в отличие от реальных жестких ссылок ), когда исходный и конечный файл получают разные изменения, в будущем эти изменения будут сохранены физически в разных местах, и файловая система привяжет изменения к правильному файлу. Ознакомьтесь с любыми документами о копировании -на -записи и дедупликации данных (, например. страницы Википедии )для получения дополнительной информации.

0
28.01.2020, 03:53

Теги

Похожие вопросы