У меня есть папка, которая содержит файлы для статического сайта, такие как:
/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...
Если я обновляю что-то на своем ноутбуке, я хочу, чтобы одна команда отправила файлы на мой сервер Ubuntu. Я не хочу настраивать FTP на нем, если у меня его тоже нет, интересно, сможет ли scp справиться с этим?
tar
черезssh
: unix.stackexchange.com/a/10028/79839Ответы:
Команда
scp -r source user@target:dest
обходит все подкаталоги исходного кода и копирует их.Однако
scp
ведет себя какcp
и всегда копирует файлы, даже если они одинаковы как для источника, так и для места назначения. [Смотрите здесь для обхода.]Поскольку это статический веб-сайт, вы, скорее всего, только делаете обновления, а не заново создаете все это, поэтому вы, вероятно, обнаружите, что все движется быстрее, если вы используете
rsync
вместо ssh вместо sshscp
. Наверное, что-то вроде...для начала. Если вы делаете это через локальную сеть, я бы лично использовал параметры
-avW
вместоrsync
.Rsync также дает вам возможность дублировать удаления в вашем источнике; поэтому, если вы удалите файл из своего дерева, вы можете запустить,
rsync
как указано выше, и включить флаг,--delete
и он удалит тот же файл со стороны назначения.источник
У scp есть рекурсивный флаг, который будет делать то, что вы хотите.
scp -r /base/directory user@server:/to/location
от
man scp
источник
Как отметили другие, scp -r и rsync -r - самые надежные способы получить то, что вы хотите.
Вы также можете использовать sshfs для «монтирования» его, как если бы это был локальный диск:
sshfs user@host:/site /mnt/mountpoint
(Однако вам, вероятно, лучше работать локально и развертывать с помощью rsync. Просто еще один инструмент, о котором нужно знать.)
источник