Як скопіювати всі файли з каталогу у віддалений каталог за допомогою scp?


68

Моя мета - скопіювати лише всі файли з ~ / local_dir на user@host.com / var / www / html / target_dir за допомогою scp і не створювати категорію local_dir у local_dir.

/var/www/html/target_dir/files..

але ні

/var/www/html/target_dir/local_dir/files.. при використанні параметра -r


1
Хіба scp * user@host.com:/var/www/html/target_dirне робити те , що ви хочете? Якщо так, будь ласка, відредагуйте докладніше, що ви намагаєтесь робити і намагалися до цього часу.
Майкл Гомер

Додавання /. це вже не робота. Більше тут
Tsulatsi Tamim

Відповіді:


91

scp має аргумент -r. Отже, спробуйте використовувати:

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

Аргумент -r працює так само, як аргумент -r в cp, він передасть всю вашу папку та всі файли та підкаталоги всередині.


5
Ваша команда створила local_dirкаталог в / var / www / html / target_dir, моя мета - копіювати лише файли.
Едгарас Карка

Вибачте, я неправильно зрозумів Потім просто повторіть команду, але так: $ scp -r ~/local_dir user@host.com:/var/www/html/Потім перейменуйте новий каталог, якщо потрібно.
паразид

8
Або що $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirб не плавав ваш човен.
паразид

Як виключити певні каталоги з локальних під час копіювання у віддалений
Sushivam

13
Змініть підстановку *на крапку .і ви скопіюєте вміст каталогу (включаючи будь-які файли крапок), не копіюючи сам каталог. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima

19

Якщо ваша мета полягає в тому, щоб перенести всі файли з local_dirв *груповий символ робить трюк:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

Цей -rпараметр означає "рекурсивно", тому його потрібно записати, коли ви намагаєтесь перенести цілий каталог або кілька каталогів.

Від man scp:

-r 
Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.

Отже, якщо у вас є підкаталоги всередині local_dir, останній приклад передаватиме лише файли, але якщо встановити -rпараметр, він передаватиме файли та каталоги.


1+ Тому що вам потрібно прочитати коментарі до прийнятої відповіді, щоб дійти до правильної відповіді, в той час як цей просто пояснює це безпосередньо.
Андре Крістофер Андерсен

17

Звернення /.до вашого вихідного каталогу передасть його вміст замість самого каталогу. На відміну від шаблонного рішення, це також буде включати будь-які приховані файли.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

Кредит за це рішення належить до roaima, але я подумав, що він повинен бути розміщений як реальна відповідь, а не лише коментар.


0

Виконайте такі дії:

  1. Скопіюйте каталог local_dirз усіма його підкаталогами:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. скопіюйте лише вміст, local_dirа не сам каталог local_dir:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Не використовуйте: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirоскільки він видає помилку (щойно перевірений і отримав таку помилку):

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