Чи можу я скопіювати папку з підпапками?


31

У мене папка, яка містить файли для статичного веб-сайту, наприклад:

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

Якщо я щось оновлюю на своєму ноутбуці, я хочу, щоб одна команда пересилала файли на мій сервер ubuntu. Я не хочу встановлювати FTP на нього, якщо у мене теж немає, цікаво, чи зможе scp це впоратися?


Я віддаю перевагу tarчерез ssh: unix.stackexchange.com/a/10028/79839
пташенята

Відповіді:


56

Команда scp -r source user@target:destбуде обходити всі підкаталоги джерела та копіювати їх.

Однак scpповодиться як cpі завжди копіює файли, навіть якщо вони однакові як у вихідному, так і в цільовому призначеннях. [Дивіться тут для вирішення.]

Оскільки це статичний веб-сайт, ви, швидше за все, оновлюєте лише оновлення, а не створюєте цілі речі, тож ви, ймовірно, знайдете, що справи рухаються швидше, якщо rsyncзамість них ви будете використовувати над ssh scp. Напевно, щось подібне

rsync -av -e ssh source user@target:dest

... для початку. Якщо ви робите це через локальну мережу, я особисто використовую варіанти -avWзамість цього rsync.

Rsync також дає можливість дублювати видалення у своєму джерелі; тож якщо ви видалите файл із дерева, можете запустити, rsyncяк зазначено вище, включити прапор, --deleteі він видалить той самий файл із сторони призначення.


9

scp має рекурсивний прапор, який буде робити те, що ви хочете. scp -r /base/directory user@server:/to/location

з man scp

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

2

scp -r та rsync -r - це найнадійніші способи отримати те, що ви хочете, як зазначали інші.

Ви також можете використовувати sshfs, щоб 'змонтувати' його, як якщо б це був локальний привід: sshfs user@host:/site /mnt/mountpoint

(Однак вам, мабуть, краще працювати локально та розгортатись за допомогою rsync. Просто ще один інструмент, про який слід пам’ятати.)

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