передайте файл удаленному dir, только если не существует без замены

Вы выполняете много из printfs для того задания. почему не просто делают что-то как

cat pool.sam |\
 awk '/./ {printf $1,$7+1,"\t"$3,"\t",($2!=16)?"+","-",$4,"\t",length($10)+$4,"\t1"}}'
3
22.07.2014, 13:39
2 ответа

Вот простой способ, который не сохраняет метаданные:

ssh server.example.com 'set -C; cat >/path/to/remote/file' </path/to/local/file

Вы можете сделать это с помощью rsync с правильными опциями. Код возврата будет равен 0, если файл существует, но вы можете узнать это из подробного вывода.

changes=$(rsync -a --ignore-existing --itemize-changes \
                /path/to/local/file server.example.com:/path/to/remote/file)
if [ $? -ne 0 ]; then
  echo >&2 "Some error occured"
  return 2
elif [ -n "$changes" ]; then
  echo "The file was copied"
  return 0
else
  echo "The file already existed"
  return 1
fi
1
27.01.2020, 21:43

Сначала проверьте, существует ли файл на удаленном хосте:

if ! ssh remotehost [ -f incoming/DB1026910.sql ]; then
    scp DB1026910.sql remotehost:incoming/
fi
-1
27.01.2020, 21:43

Теги

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