SSHFS вместо FTP

Довольно часто мне приходится заниматься отладкой скриптов прямо на рабочем сервере. Обычно в этом случае я использовал Filezilla, который хорош всем, кроме одного: после каждого изменения какого-либо файла он требует подтвердить его загрузку на сервер, на что и время теряется, и очень раздражает лишнее переключение между окнами. И вот недавно нашел другой вариант: использовать sshfs. Если есть подключение к серверу по SSH, то с ее помощью можно работать с удаленными файлами так же как с локальными. Все изменения будут отправляться на сервер сразу же после сохранения в редакторе, без каких-либо дополнительных действий или подтверждений. В результате отладка ускоряется в разы!

Чтобы использовать sshfs, нужно сначала установить соответствующий пакет. В Debian и Ubuntu это делается так:

$ sudo apt-get install sshfs

После этого создаем точку монтирования и задаем в качестве владельца своего пользователя (вместо user1 нужно подставить его имя):

$ sudo mkdir -p /mnt/ssh
$ sudo chown user1 /mnt/ssh

И после этого подключаемся к удаленному серверу (вместо user нужно подставить имя пользователя на сервере, вместо example.com — адрес сайта):

$ sshfs user@example.com: /mnt/ssh 

Потребуется ввести пароль, после чего в /mnt/ssh появлются файлы с сервера, работать с которыми можно точно так же, как с локальными. Отключение делается как обычно sudo umount /mnt/ssh.

Кроме этого, подключение через sshfs можно использовать для быстрой синхронизации сайта с его локальной копией. Выгрузка сайта на локаль делается так:

rsync -r /mnt/ssh/ <путь_к_локальной_копии_сайта>/

Загрузка изменений на сервер:

rsync -r <путь_к_локальной_копии_сайта> /mnt/ssh

 

Если нужно исключить из синхрониацзии какие-либо файлы (чаще всего это файлы настроек подключения к БД), следует использовать опцию --exclude=имя_файла.