alt

Как установить и настроить gulp rsync?
Как настроить беспарольный доступ?
Как синхронизовать локальные данные с хостигом?

SETUP ENVIRONMENT

$ sudo apt-add-repository -y ppa:brightbox/ruby-ng; sudo apt-get update; sudo apt-get -y install curl ruby2.5 ruby2.5-dev gcc make g++ libffi-dev; curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -; sudo apt-get -y install nodejs; sudo gem i jekyll; sudo gem i jekyll-paginate-v2; sudo npm i -g gulp rimraf npm-check-updates; sudo chown -R $USER:$(id -gn $USER) /home/$USER/.config
$ unzip OptimizedHTML-4.zip

Откроем в рабочей директории баш окно.

$ ncu -a
$ npm i
$ gulp

Мой пример таска rsync в gulp

$ cat gulpfile.js
...
    gulp.task('rsync', function() {
    return gulp.src('directory/**')
    .pipe(rsync({
        root: 'directory/',
        hostname: 'username@ipaddress',
        port: port,
        destination: 'path',
        include: ['*file1'], // Includes files to deploy
        exclude: ['**/file2', '**/*files3'], // Excludes files from deploy
        recursive: true,
        archive: true,
        silent: false,
        compress: true,
    }))
    });
...

SSH SETTINGS

Мой хостинг не позволяет редактировать файл ~/.ssh/authorized_keys и я не могу добавить в него публичный ключ. Поэтому для синхронизации данных с помощью rsync я настроил беспарольный ssh доступ, используя приватный ключ.

Добавим в ~/.ssh/config данные для подключения к хостингу.

Host hostingipaddress
    HostName hostingipaddress
    User username
    Port port
    IdentityFile /home/username/.ssh/key

Проблема в том, что, если использовать свое название в качестве значения для параметра Host, то проверка "ssh customname" покажет, что настройки работают корректно, но gulp rsync выдаст ошибку, что ключ не подходит. Поэтому в значении параметра Host следует указать IP адрес вашего хостинга. То есть значения параметров Host и HostName в файле ~/.ssh/config будут совпадать. Теперь, вместо команды "ssh -p port username@hostingipaddress -i pathtokeyfile" для проверки можно ввести "ssh hostingipaddress".

В новом баш окне выполним команду синхронизации данных локального компьютера и хостинга

$ gulp rsync
    [12:34:09] Using gulpfile /pathto/gulpfile.js
    [12:34:09] Starting 'rsync'...
    [12:34:09] gulp-rsync: Starting rsync to hosting...
    [12:34:10] gulp-rsync: sending incremental file list
    [12:34:10] gulp-rsync: sent 13,482 bytes  received 73 bytes  9,036.67 bytes/sec
    [12:34:10] gulp-rsync: total size is 27,155,698  speedup is 2,003.37
    [12:34:10] gulp-rsync: Completed rsync.
    [12:34:10] Finished 'rsync' after 597 ms