Як я можу отримати команду scp, щоб перезаписати цільову папку


41

Я використовую команду scp, щоб скопіювати деякі файли на віддалений ПК, як це робиться з scp :)

Зауважу, що поведінка scp-копії для файлів за замовчуванням - це перезапис усіх існуючих файлів. Тепер я хочу скопіювати папку, щоб зробити в основному те саме:

scp -r <source_path> user@myOtherPc:<dest_path>

Де частини в <> - це мої контури папок. Однак, коли я запускаю це, я отримую повідомлення "файл існує". Чи є шлях до цього? якась сила перезапису?

Спасибі, Кормо


2
Чи можете ви навести кілька прикладів шляху? Я не виконую це для відтворення в моїй системі. Також ви перевірили дозволи на файли?
Леванс

Чи дає вам корисна інформація, якщо ви використовуєте багатослівний режим? -v. Також ви використовуєте абсолютний або відносний шлях на стороні призначення? Я думаю, якщо папка призначення вже існує, вона створить вихідний шлях усередині папки призначення, а не перезаписати ( testdir/testdir)
beroe

2
Дивно, що ти це отримуєш. Нібито у scp немає noclobber ...
beroe

1
@Levans Я не перевіряв дозволи, я тільки що подивився, і я думаю, ти можеш мати рацію. Я видалив усе в цільовій області і знову почав використовувати лише команду "scp" та користувач "root", і мені вдалося скопіювати файли / папки кілька разів :) ... Я не впевнений на 100%, що видаю дозвіл мав, але тепер у мене є "ручка" з цього питання, я, певно, можу це зрозуміти, дякую
code_fodder

1
@beroe Так, це теж я думав ... це мене бентежило, але я думаю, що я тут зробив якусь помилку користувача з дозволами, я ще не експерт Linux :( Але я спробую багатослівність-ness наступного разу у мене є така проблема, щоб отримати більше інформації, дякую.Также я помітив, що іноді ви отримуєте "папку всередині папки", але це інше питання: o
code_fodder

Відповіді:


27

Як було сказано раніше, scp радісно перезаписує будь-який файл, який вже є.

Проблема "файл існує" може виникнути лише тоді, коли у вас є якийсь інший процес (наприклад, паралельний процес scp або щось інше), що записує папки та файли до того самого пункту призначення. Подумайте про використання rsync.


1
Я хотів би лише додати: ... поки у вас є доступ для запису до цього файлу ...
SDsolar

але для папок вона зливає папку чи замінює її?
Dr_Hope

5

Як і Леванс, я не зміг це повторити, але чи розглядали ви замість цього rsync над ssh? Якщо ви копіюєте велику кількість файлів, rsync може бути кращим варіантом, ніж scp. В Інтернеті є ряд хороших посібників, таких як:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

Це перше посилання стосується автоматизованих резервних копій через cron, тому деякі інструкції (наприклад, створення ssh-ключа без парольної фрази) можуть не стосуватися вас.


Цікаво, що я не знав, що ти можеш використовувати rsync таким чином ... просто швидко переглянув сторінку man і схоже, що ти можеш використовувати її дуже схожим способом для scp з <source_path> та <user @ host: dest_path> параметри. Я не на 100% впевнений, що це я хочу, оскільки хочу завжди копіювати / перезаписувати, не піклуючись про стан того, що є у dest, але все одно приємна ідея :)
code_fodder

Так, можливо, варто зіграти, тому що він повинен копіювати файл, якщо він був змінений (або частина файлу, яка була змінена, мені потрібно ще раз перевірити, і я трохи втомився право зараз).
Бен

ха-ха .... не хвилюйся про перевірку, я можу це зробити ... але дякую за інформацію :)
code_fodder

Ах, класно, я можу перестати дивитись на сірники як на засіб для розкриття повік. ;)
Бен

1
Це може спрацювати, але це те, як використовувати кувалду для того, щоб проплисти муху. ;-)
SDsolar

3

Ви отримаєте це повідомлення про помилку, якщо каталог призначення вже містить файл із тим самим іменем, що і вихідний каталог, який ви намагаєтеся перенести. Ви не можете мати файл з тим самим іменем, що і каталог в одному каталозі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.