Что происходит при передаче файлов по ssh при отключении?

Еще 2 способа командой find:

find -type f -name "index.php" -exec grep -l 'hello' {} \;

find -type f -name "index.php" -exec grep -q 'hello' {} \; -print
0
04.09.2019, 18:15
2 ответа

Похоже, что переименование файла после завершения загрузки является опцией, поскольку переименование является атомарной операцией. Насколько я понимаю, проверка целостности zip не гарантирует, что файл скачан полностью -, существует очень небольшая вероятность того, что часть файла также является правильным zip файлом. Но, в любом случае, мне нравится идея Drawbenn проверить эту целостность для дополнительной безопасности. Итак, благодаря ответам icarus и Drawbenn я пришел к окончательному решению:

gzip -c -9 %p | ssh user@server 'set -e; cat > /var/tmp/file.txt.part; gzip -t /var/tmp/file.txt.part; sync /var/tmp/file.txt.part; mv /var/tmp/file.txt.part /var/tmp/file.txt'
0
28.01.2020, 02:29

С точки зрения процесса catэто просто копирование данных из стандартного ввода в стандартный вывод, и он ничего не знает о том, являются ли данные вообще, и в частности, являются ли они полными или нет. Таким образом, ответ на ваш вопрос нет это не стратегия «все или ничего».

Вы можете сделать что-то в 2 шага, что сделает его более надежным.

 #/bin/bash
 set -e
 set -o pipefail
 gzip -c -9 %p | ssh user@server  "cat > backupPath.tmp"
 ssh user@server  "mv backupPath.tmp backupPath"

Обратите внимание, что %pбыл скопирован из исходного сообщения, это не синтаксис оболочки.

2
28.01.2020, 02:29

Теги

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