Могу ли я найти папку с подпапками?


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 вместо 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.