В сегодняшней заметке я рассмотрю консольную утилиту которая умеет делать лишь наверное что-то одно, но хорошо. Это взять определенные файлы к себе и посредством FTP загрузить их обратно, конечно такую же задачу можно решить и обычным копированием через безопасное подключение с одной системы на другую (scp) или просто задействовать утилиту rsync. В зависимости от задачи и имеющихся инструментов каждый выбирает что-то удобное по себе. Но сейчас речь пойдет об утилите lftp.
Исходные данные следующие:
Мой FTP ресурс в локальной сети, который используется только как простой обмен определенными файлами с другими серверами, доступ на него и видят его только определенные хосты (да здравствуют правила iptables).
Устанавливаю утилиту lftp к себе в систему простой командой:
ekzorchik@dv6:~$ sudo apt-get install lftp -y
Теперь подключусь к удаленной системе с использование безопасной передачи аутентификационных данных:
ekzorchik@dv6:~$ lftp sftp://ekzorchik:712mbddr@@ekzorchik.net -p 22222
Успешно соединение к хосту в консоль командной строки выглядит так:
lftp ekzorchik@ekzorchik.net:/>
Выведу список файлов на удаленной системе:
lftp ekzorchik@ekzorchik.net:~> ls
drwx—— ekzorchik/4395 4096 2014-12-19 19:10 .
drwx—— ekzorchik/4395 4096 2014-12-19 19:10 ..
-rw——- ekzorchik/4395 11750 2014-11-16 14:12 .bash_history
-rw——- ekzorchik/4395 35 2013-06-12 09:56 .lesshst
drwxr-xr-x ekzorchik/4395 4096 2012-11-23 16:51 .mc
-rw——- ekzorchik/4395 656 2013-02-03 15:33 .mysql_history
-rw-r–r– ekzorchik/4395 2681518 2012-10-16 22:31 111.jpg
drwxr-xr-x ekzorchik/4395 4096 2015-06-18 17:31 backup
drwxr-xr-x ekzorchik/4395 4096 2015-06-18 13:02 backups
drwxr-xr-x ekzorchik/4395 4096 2014-02-01 23:40 doci
drwxr-xr-x ekzorchik/4395 4096 2013-07-12 17:59 domains
drwxr-xr-x ekzorchik/4395 4096 2015-06-15 01:29 logs
drwxr-xr-x ekzorchik/4395 4096 2013-06-12 09:59 script
drwxr-xr-x ekzorchik/4395 16384 2015-06-18 12:31 tmp
Отлично, просто как дважды два,
Основные команды которые можно использовать в текущем подключении:
exit – > завершить соединение проведенное через lftp
pwd → отобразить текущее местоположение на удаленной системе
ls → листинг файлов в текущем каталоге
lpwd — текущий путь на локальной станции куда можно будет скачивать файлы с удаленной системы
lftp ekzorchik@ekzorchik.net:~> lpwd
/home/ekzorchik
lcd <любая_директория> – смена текущего путя на локальной станции
lftp ekzorchik@ekzorchik.net:~> lcd /home
lcd ok, локальный каталог=/home
lftp ekzorchik@ekzorchik.net:~> lpwd
/home
!ls — отобразить файлы локальной системы в текущем каталоге
!rm — удалить файл на локальной системе
lftp ekzorchik@ekzorchik.net:/backup> !rm file.tar.gz
по такому же принципу можно использовать все консольные команды локальной станции предваряя их символом восклицательного знака.
get file → произвести скачивание из текущего каталого удаленного сервера в текущую директорию локальной системы
get file -o localfile — скачать с удаленного сервера файл file и сохранить его на локальной системе под именем localfile
lftp ekzorchik@ekzorchik.net:/backup> get tips_firma_v1_18_06_2015_17.tar.gz -o file.tar.gz
26506589 байтов перемещено за 52 секунды (500.5Кб/с)
put file → произвести закачку файлы с локальной системы на удаленную систему
put file -o remotefile → по аналогии что и get но на оборот
Еще интересной особенностью утилиты lftp есть возможность использовать синхронизацию, а именно, как:
Директория удаленного сервера и ее полное содержимое синхронизируется с локальной директорией — ключ mirror remote_directory
Пример:
ekzorchik@dv6:~$ lftp sftp://ekzorchik:712mbddr@@ekzorchik.net -p 22222 -e 'mirror -e logs blog; bye;'
Всего: 6 каталогов, 20 файлов, 0 ссылок Созданы: 20 файлов, 0 ссылок 93312327 байтов перемещено за 182 секунды (500.2Кб/с)
Переношу файлы бекапа с онлайн-хранилища На локальную машину: ekzorchik@dv6:~$ lftp sftp://ekzorchik:712mbddr@@ekzorchik.net -p 22222 -e 'mirror -e backup blog; bye;'