Назад | Перейти на главную страницу

Могу ли я скопировать папку с подпапками?

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

/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 имя пользователя @ сервер:папка назначения