Подтвердить что ты не робот

Запретить перезапись файлов при использовании Scp

Я копировал некоторые файлы с помощью scp, и я не хочу перезаписывать уже существующие файлы.

Если я использовал команду cp, я думаю, что это можно сделать с помощью cp -n.

Есть ли аналогичный вариант для scp, я просмотрел документацию SCP и, похоже, такой опции нет.

Является ли rsync или sftp способ решить эту проблему?

Дополнительная информация:

ОС: Ubuntu 12.04

4b9b3361

Ответ 1

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

rsync -avz foo:src/bar /data/tmp

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

-v и -z - средние и сжатые соответственно. Вы действительно не нуждаетесь в них, хотя -z хорошо, если вы копируете большие файлы.

Ответ 2

Я просто нашел простой хак. Отметьте существующие файлы как доступные только для чтения.

Ответ 3

rsync -avz --ignore-existing /source folder/* [email protected]:/dstfolder/

--ignore-existing не будет перезаписывать файлы на удаленном сервере или сервере назначения *.

Ответ 5

Я использовал rsync в прошлом для этого, но обнаружил, что пытаюсь захватить из окна окно с CopSSH и нет rsync:-( Следующие работали просто отлично для меня, используя проверки файлов, чтобы исключить файлы, которые будут перезаписывается и генерирует запросы mutiple 'get' к экземпляру sftp.

(  echo  'cd work/ftp/' ; 
   ssh <user>@<machine> 'cd work/ftp/ && ls -1 ITEM_SALE_SUMMARY_V.*.dat.xz' |
   while read line; do [[ -f "$line" ]] || echo get "$line"; done 
) | sftp  <user>@<machine>

На всякий случай другим нужно решение без rsync!

Ответ 6

Просто для дополнения других решений:

Для одного файла ascii/bin вы можете сделать это с помощью

cat source_file | ssh host "test ! -f target_file && cat > target_file"

Ответ 7

Я не тестировал его, но, возможно, сначала смонтировал через sshfs, а затем используя cp выполнит трюк.