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

Я использую CentOS linux.

В одной строке cmd, которая возвращает 0, если успех, не-0, если сбой, мне нужно:

  1. Перенесите файл на удаленный сервер.
  2. Не переносите файл, если имя файла существует на удаленном сервере (возврат не-0)

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

Твист : пользователь, который выполняет эту команду, не является root, файлы принадлежат этому пользователю. Место назначения принадлежит одному пользователю. Для ssh доверие ssh . Но не для этого пользователя. Невозможно запросить пароль, так как эта команда является частью автоматического сценария. Возможны предварительные шаги настройки. Я могу добавить их как одноразовую конфигурацию. Может ли кто-нибудь помочь?

2 Solutions collect form web for “передавать файл в удаленный каталог только в том случае, если он не существует без замены”

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

 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 

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

 if ! ssh remotehost [ -f incoming/DB1026910.sql ]; then scp DB1026910.sql remotehost:incoming/ fi 
  • попытался создать дубликата пользователя root, больше не может подключаться к серверу
  • Как включить унисон для входа в ssh из сервисного модуля systemd?
  • Можно ли переключиться на другой процесс на другом терминале tty # с терминала ssh?
  • Сценарий SSH и команда запуска
  • играя звук / уведомление в finch поверх ssh на моей локальной машине
  • Не удается установить ImageMagick на Centos с помощью Yum
  • Проблема с символом ':' в скрипте Bash через SSH
  • Есть ли способ отправить команду из удаленного сеанса ssh на ваш локальный компьютер?
  • туннелирование VNC / rdesktop над ssh
  • Проблема с sudoing ssh - `sudo ssh ...` не работает
  • Что может пойти не так, если мы отключим selinux
  • Interesting Posts

    Редактировать меню Grub без дополнительных инструментов

    Как я могу избежать манипулирования аргументами с пробелами в расширении Ex {$ {run {…}}?

    LVM не подходит после перезагрузки, не смог найти устройство с uuid

    Печать Gnome (Evince): масштабирование pdf-файла и центра (избавление от поля страницы)

    замещение процесса с помощью <(gunzip …) не выполняется

    Окно GTK gtkdialog для создания ссылки

    Ручное копирование MBR с одного диска на другой GPT-диск и настройка GRUB приводит к сбою загрузки

    Поиск и удаление пакетов, обеспечивающих рабочие среды настольных компьютеров

    Как я могу интерполировать текстовый файл трехмерных координат (X, Y, Z) на регулярную сетку?

    Помогите понять код bash?

    Как я могу узнать, почему «rpc.gssd» запускается каждый раз?

    Вставить строку или строку после последнего экземпляра определенной переменной поиска в цикле

    csplit regex с трубкой (|)

    Несколько сеансов Unix

    Windows 7 для Debian Linux: установка без CD / DVD или USB-накопителя или сети во время установки

    Linux и Unix - лучшая ОС в мире.