У меня есть папка, содержащая файлы для статического веб-сайта, например:
/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...
Если я что-то обновляю на своем ноутбуке, мне нужна одна команда, чтобы отправить файлы на мой сервер ubuntu. Я не хочу настраивать FTP на нем, если у меня его тоже нет, интересно, сможет ли scp справиться с этим?
Команда scp -r source user@target:dest
пройдется по всем подкаталогам источник и скопируйте их.
Тем не мение, scp
ведет себя как cp
и всегда копирует файлы, даже если они одинаковы как в источнике, так и в месте назначения. [Видеть Вот для обходного пути.]
Поскольку это статический веб-сайт, вы, скорее всего, только делаете обновления, а не воссоздаете все целиком, поэтому вы, вероятно, обнаружите, что все идет быстрее, если вы используете rsync
через ssh вместо scp
. Наверное что-то вроде
rsync -av -e ssh source user@target:dest
...для начала. Если вы делаете это через локальную сеть, я бы лично использовал параметры -avW
вместо этого для rsync
.
Rsync также дает вам возможность дублировать удаления в вашем источнике; поэтому, если вы удалите файл из своего дерева, вы можете запустить rsync
как указано выше, и включите флаг --delete
и он удалит тот же файл со стороны назначения.
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.
scp -r и rsync -r - самые надежные способы получить то, что вы хотите, как отмечали другие.
Вы также можете использовать sshfs для «монтирования» его, как если бы это был локальный диск: sshfs user@host:/site /mnt/mountpoint
(Однако вам, вероятно, лучше работать локально и развертывать с помощью rsync. Это еще один инструмент, о котором нужно знать.)
Используйте команду ниже
scp -r sourceFolder имя пользователя @ сервер:папка назначения