Чи є інші команди, такі як scp, але для видалення файлів і папок?


14

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

Тому я хочу спочатку видалити віддалену папку, а потім зробити копію, щоб переконатися, що я маю саме те, що мені потрібно.

Чи є інші команди, такі як scp (наприклад, srm або smv)? Або є спосіб видалити віддалені папки та файли?

Відповіді:


19

sshКоманда дозволить вам виконати майже будь-яку команду на віддалений хост, наприклад,

ssh yourlogin@remotehost rmdir somedir

де в цьому прикладі somedirвідносно домашнього каталогу вашого блогу.


Дякую за це. Єдине питання, що у мене з методом, полягає в тому, що кожного разу, коли ви викликаєте його, вам доведеться знову "увійти" :(. Оскільки моя ціль вбудована, я не можу використовувати ключі ssh, тому що це все перезаписано, тому я намагаюся зробіть це в одній команді. rsync виглядає багатообіцяюче, але +1, оскільки це відповідає на питання :))
code_fodder

5
@code_fodder Вам також доведеться увійти з rsync. Насправді вам доведеться знову увійти в систему за допомогою усіх методів. Справді, з SSH ви можете принаймні виконати кілька команд за один раз: ssh you@host bash -c "command1;command2;command3; commandN".
тердон

@terdon Це хороший момент і працює nicley спасибі :)
code_fodder

4

Rsync скопіює весь шлях / дерево та перевірятиме файли вже за адресою, а не переймається їх копіюванням, якщо вони не змінені. Якщо ви скористаєтеся опцією --delete, вона видалить усі файли, які перебувають у пункті призначення, які вже не є джерелом. Він працює над ssh


Я возився з rsync, як хтось згадав про це в іншій моїй посаді щодо scp. У мене встановлено rsync на моєму локальному ПК, але не на віддаленому ПК (вбудований блок). Я використовував команду, rsync -avz -e shh root@location:/path/to/dest /path/from/hostале вона не вдається після введення пароля sh: rsync: not found. Чи означає це, що rsync має існувати на віддаленому ПК? Спасибі!
code_fodder

1
@code_fodder так, йому потрібна програма, що працює на віддаленій системі, щоб сказати, що їй робити. Це не проста програма копіювання
канадський Люк

@CanadianLuke ... чорт :(
code_fodder

@code_fodder просто встановіть його! Корисніше, ніж ні
канадський Люк

Залежно від вбудованого рішення, rsync може бути або не бути доступним з будь-якою мірою просто ... хоча це дуже поширена ситуація, як я вже сказав, залежно від вбудованого рішення. Примітка: Rsync не повинен працювати весь час, але він повинен бути присутнім для запуску на вимогу.
джерм

3

Якщо ваш віддалений сервер SSH підтримує підсистему SFTP (більшість випадків, якщо це не було явно відключено), ви можете використовувати sftpоболонку (або будь-який інший клієнт SFTP ) для управління файлами та каталогами на віддаленому сервері.

На жаль, одне, що, sftpочевидно, не справляється з базовою оболонкою - це рекурсивне видалення каталогу; щоб видалити каталог, потрібно спочатку видалити весь його вміст. Більшість інших клієнтів (особливо графічні), як правило, підтримують це.

(Ви не згадуєте, що таке ваша локальна ОС, але якщо це Linux, ви можете використовувати свій рідний файловий менеджер як клієнт GUTP SFTP , вказавши його на URL-адресу, наприклад sftp: // user @ host / path /. Для Windows, WinSCP є гідним клієнтом, а FileZilla - хорошим кросплатформним рішенням.)


1

Щоб очистити віддалений (/ локальний) каталог, використовуйте rsync таким чином:

rsync -r --delete-excluded --exclude=* / server:/tmp/empty_this_dir/

Будьте обережні - це видаляє все нижче вказаного пункту призначення!


Я спробував це, але він повертає помилку і не видаляє віддалений каталог. не вдалося виконати запит на exec на каналі 0 rsync: з'єднання несподівано закрите (0 байтів отримано дотепер) [відправник] rsync помилка: незрозуміла помилка (код 255) у io.c (235) [sender = 3.1.2]
xarlymg89

Схоже, є проблема запуску rsync на віддаленій стороні або навіть підключення через ssh. Можна спробувати ssh server rsync --versionабо ssh -v server rsync --versionзнайти причину.
бро

Дякую за відповідь, проте я знайшов спосіб вирішити проблему не настільки елегантно, але з подібними результатами. Спробую ще раз, оскільки я вважаю, що мені доведеться зіткнутися з цим ще раз.
xarlymg89

0

Як альтернатива, встановлення віддаленого каталогу в локальному, потім видалення з ним rm -r /path_to_directory_to_removeі, нарешті, вичитування каталогу не вдасться.

Оригінальна відповідь тут: /programming//a/24650511/973919

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