- Как заставить tar сохранить архив на удаленной машине, используя sftp или ftp?
- Работа с FTP из терминала Linux
- Основные FTP команды в Linux
- FTP соединение
- Команды для навигации
- Удаление файлов на ftp сервере
- Скачивание файлов с ftp
- Загрузка файлов на ftp сервер
- Простой способ резервного копирования Linux-сервера с выгрузкой файлов по FTP
- Хозяйство
- Задача
- Решение
- tar very large files to FTP directly splited into smaller files
- 2 Answers 2
Как заставить tar сохранить архив на удаленной машине, используя sftp или ftp?
Я хотел бы сделать резервную копию некоторых из моих очень важных данных на удаленной машине.
В настоящее время я просто сохраняю его на свой локальный компьютер с помощью этой команды: tar -cvjf
Я бы предпочел не использовать другую команду для передачи ее на удаленный компьютер, а это значит, что я хотел бы просто обновить эту команду, чтобы она могла передавать данные на удаленный компьютер.
Это разработано, чтобы быть в сценарии позже, который должен запускаться самостоятельно, означая, что любой тип требуемого пользовательского ввода полностью испортит его!
было бы идеально! (Нет труб (и т.д.), только одна команда!)
Tar не говорит по ftp или sftp. Это не его работа. Вы не можете сделать это только с помощью tar. Использование соответствующих инструментов для каждой работы и объединение их с оболочкой — это нормальный способ работы в системах Unix.
Наиболее очевидное решение — создать архив локально, а затем скопировать его на удаленный компьютер.
Если вы не хотите создавать архив локально, потому что у вас недостаточно места, вы можете создать именованный канал, сделать запись tar в этот канал и найти ftp-клиент (ы), который может читать из каналов. К сожалению, sftp отказывается от put трубы. Некоторые FTP-клиенты работают, например, lftp:
Введите свой пароль FTP
В качестве альтернативы, есть способ сохранить команду tar непосредственно на удаленном сервере, но вам нужна предварительная настройка. Установите удаленный сервер через SSHFS или curlftpfs .
Источник
Работа с FTP из терминала Linux
Иногда необходимо работать с FTP из консоли, когда под рукой нет доп. программ и FTP менеджеров. Обычно это бывает нужно что бы перемести сайт с одного хостинга на другой, да есть более правильный способ создать архив всех файлов:
И после забрать все wget -ом на новый хостинг.
Но так можно сделать только том случае если сайт с которого мы забираем архив еще торчит мордой в интернет, что бывает не всегда, например домен не продлен или ns сервера уже другие.
В таких случаях мы можем воспользоваться старым дедовским способом подключения к ftp прямо из терминала:
Попросит логин и пароль и мы в ftp.
Is — Выводит список файлов и директорий.
get — Скачивает файл, с удаленной машины.
mget — Скачивает файлы по маске (например mget * все файлы, mget *. php файлы php)
cd — Это здесь работает исключительно на удаленной машине.
lcd — тоже самое что cd но только для локальной машины (да да это у них разные вещи).
put — Заливает файл на удаленную машину.
mput — Заливает несколько файлов по маске (аналогично mget).
mkdir — Создает каталог.
rmdir — Удалить каталог.
delete — Удаляет файл.
bye — Завершает сеанс FTP–сервером.
binary — Устанавливает бинарный режим передачи файлов.
close — Завершает сеанс FTP и возвращается в контест командной строки FTP.
status — Статус FTP клиента.
Еще один вариант для маргиналов это примаунтить FTP диск:
выставляем на всякий случай максимальные права каталогу в который собираемся монтировать:
Теперь если вы дочитали до конца покажу простой вариант того же самого.
Понадобится Midnight Commander, если не установлен ставим:
Теперь переходим во вкладку Right/Left, без разницы выбираем «FTP link..» :
Адрес хоста можно вводить как что называется без ничего (он сам все попросит логин и пароль), так и как в скриншоте все и сразу
Единственный минус этого способа может быть отрисовка прогресса закачки файла , не проверял, но думаю она не много тормозит процесс в случае если файлов много, но обычно это не критично.
Источник
Основные FTP команды в Linux
FTP (File Transfer Protocol — протокол передачи файлов) — это популярный сетевой протокол, который используется для копирования файлов с одного компьютера на другой в локальной сети, либо в сети Интернет. FTP является одним из старейших прикладных протоколов, появившимся задолго до HTTP, и даже до TCP/IP, в 1971 году.
Протокол FTP уязвим, то есть FTP не может зашифровать свой трафик, все передачи — открытый текст, поэтому имена пользователей, пароли, команды и данные могут быть прочитаны кем угодно, способным перехватить пакет по сети. Для безопасной передачи данных, используется протокол SFTP (Secure File Transfer Protocol). В отличие от стандартного FTP он шифрует и команды, и данные, защищая пароли и конфиденциальную информацию от открытой передачи через сеть. По функциональности SFTP похож на FTP, но так как он использует другой протокол, клиенты стандартного FTP не могут связаться с SFTP-сервером и наоборот. Далее рассмотрим основные команды для работы с FTP программой.
FTP соединение
FTP клиент входит в большинство дистрибутивов Linux. Начнем с запуска программы и ftp соединением и, конечно, рассмотрим основные команды для скачивания с фтп-сервера и загрузки на фтп, создание директорий, удаление файлов и т.п. В этой статье опишем лишь основные команды, а в конце статьи приведем хелп и мануал из консоли — Вы всегда можете узнать о назначении команды и ее синтаксисе, а также обо всех доступных командах на конкретном ftp-сервере.
Для начала фтп соединения достаточно ввести команду ftp например:
После нажатия клавиши enter вывод команды будет следующим:
Другой способ для соединения — это запуск ftp из консоли, а после этого соединение с ftp-сервером с помощью команды open :
Кроме того, возможно соединиться и по ip:
Или с таким обращением ftp user@ftp.site.com , то есть:
Далее необходимо ввести логин и пароль ftp-соединения.
После успешной авторизации будет сообщение такого вида:
Из сообщения видно, что для передачи файлов используется двоичный (бинарный) тип передачи. Двоичный режим передачи файлов — это передача файлов в том виде, в котором они хранятся на FTP сервере. Режим Ascii (текстовый) используется для передачи только текстовых файлов. Вы можете вводить команды ascii или binary для переключения между режимами передачи. Бинарный режим (binary) необходимо использовать для всех нетекстовых типов файлов — изображения, архивы, программы и т.д.
Команды для навигации
Итак, перейдем к командам для навигации и перехода по каталогам ftp-сервера:
pwd — команда покажет текущую директорию на ftp-сервере:
ls — команда покажет список файлов и каталогов в текущей директории:
cd – команда для перехода в нужную директорию:
Проверяем командой pwd :
mkdir — создание новой директории (каталога):
rmdir — удаление директории (каталога):
Удаление файлов на ftp сервере
delete — удаляет файл на удаленном ftp сервере:
Скачивание файлов с ftp
get — скачать файл на локальную машину. get fileName или get fileName newFileName
Скачиваем file.zip на локальную машину как file2.zip:
С помощью команды get с удаленного ftp сервера файлы копируются в текущую локальную директорию. Чтобы изменить текущую локальную директорию нужно использовать команду lcd :
lcd – изменить текущую директорию на локальной машине:
Чтобы скачать несколько файлов с удаленного ftp сервера на локальную машину можно использовать команду mget :
Скачивание каждого файла необходимо подтверждать (да / нет) y/n .
Еще один вариант скачивания mget :
Загрузка файлов на ftp сервер
put — команда для загрузки одного файла на ftp сервер:
Для загрузки нескольких файлов сразу можно использовать команду mput :
Загрузку каждого файла необходимо подтверждать y / n (да / нет).
Еще один вариант команды mput :
Если на фтп загружаются файлы большого размера, то неплохо было бы наблюдать за ходом загрузки. Для этого можно использоваться команды hash и tick .
hash — команда после которой ftp будет печатать символ «#» каждые 1024 байт данных:
tick — команда будет отображать счетчик байтов:
Вот и весь базовый набор команд для работы с ftp в консоле. Для просмотра списка доступных команл на данном FTP сервере можно использовать команду help :
Также, можно получить короткую справку по каждой команде help :
И в завершение, две команды, которые выше quit или bye для закрытия ftp-сессии и выхода:
Подробную информацию с описанием команд можно получить с помощью man ftp в командной строке:
Источник
Простой способ резервного копирования Linux-сервера с выгрузкой файлов по FTP
Здравствуйте.
О важности регулярного резервного копирования уже сказано очень много слов. В этой статье мы предлагаем вниманию читателей примеры простых скриптов для бэкапа файлов и баз данных MySQL с последующей выгрузкой архивов на удаленный FTP-сервер.
Несмотря на то что мы в NQhost предлагаем решения по сохранению snapshot’ов VPS-контейнеров, процесс бэкапа собственными силами — безусловно важнейшая вещь.
Хозяйство
Виртуальный или физический сервер с установленной Linux-ОС, веб-сервером и базами данных MySQL.
Файлы веб-сервера располагаются в директориях
/home/site1
/home/site2
/home/site3
Задача
Создание скрипта для резервного копирования файлов и баз данных с сохранением на удаленном FTP-сервере и запуск его каждый день.
Решение
Для простоты примера работать мы будем из-под root`а, директория для хранения бэкапов файлов — /root/backup/server, а для дампов MySQL — /root/backup/mysql
Backup файлов
Здесь приводится пример скрипта для бэкапа файлов, для наглядности пояснения даны в квадратных скобках на русском языке.
#!/bin/sh
### System Setup ###
BACKUP=/root/backup/server
### FTP ###
FTPD=»/»
FTPU=»username» [имя пользавателя (логин) удаленного ftp-cервера]
FTPP=»megapassword» [пароль доступа к удаленному ftp-серверу]
FTPS=»my_remote_backup.ru» [собственно, адрес ftp-сервера или его IP]
### Binaries ###
TAR=»$(which tar)»
GZIP=»$(which gzip)»
FTP=»$(which ftp)»
## Today + hour in 24h format ###
NOW=$(date +%Y%m%d) [задаем текущую дату и время, чтобы итоговый файл выглядел в виде server-YYYYMMDD.tar.gz]
mkdir $BACKUP/$NOW
$TAR -cf $BACKUP/$NOW/etc.tar /etc [c целью сохранения настроек для простоты копируем весь /etc ]
$TAR -cf $BACKUP/$NOW/site1.tar /home/site1/
$TAR -cf $BACKUP/$NOW/site2.tar /home/site2/
$TAR -cf $BACKUP/$NOW/site2.tar /home/site3/
$TAR -zcvf $ARCHIVE $ARCHIVED
### ftp ###
cd $BACKUP
DUMPFILE=server-$NOW.tar.gz
$FTP -n $FTPS
Результатом работы данного скрипта будет созданный файл в директории /root/backup/server вида server-ГГГГММДД.tar.gz содержащий в себе tar-архивы директорий /etc, /home/site1, /home/site2 и /home/site3
Этот же файл будет загружен на FTP-сервер, который мы указали в начале скрипта.
Backup баз MySQL
Этим скриптом мы выгружаем базы данных MySQL (делаем т.н. «дампы). Каждая база выгружается в отдельный файл.
#!/bin/sh
# System + MySQL backup script
### System Setup ###
BACKUP=/root/backup/mysql
### Mysql ### [параметры доступа к нашим базам MySQL]
MUSER=»root»
MPASS=»megapassword»
MHOST=»localhost»
### FTP ###
FTPD=»/»
FTPU=»username» [имя пользавателя (логин) удаленного ftp-cервера]
FTPP=»megapassword» [пароль доступа к удаленному ftp-серверу]
FTPS=»my_remote_backup.ru» [собственно, адрес ftp-сервера или его IP]
### Binaries ###
TAR=»$(which tar)»
GZIP=»$(which gzip)»
FTP=»$(which ftp)»
MYSQL=»$(which mysql)»
MYSQLDUMP=»$(which mysqldump)»
## Today + hour in 24h format ###
NOW=$(date +%Y%m%d)
### Create temp dir ###
### name Mysql ###
DBS=»$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse ‘show databases’)»
for db in $DBS
do
Источник
tar very large files to FTP directly splited into smaller files
I need to backup a large server into FTP storage. I can tar all files, I can upload using FTP and I can split the tar file into many small files.
But the problem is I can’t do these three steps in one step. I can tar to FTP directly, I can tar with split, but can’t tar with FTP and split.
The OS is CentOS 6.2 The Files Size more than 800G
2 Answers 2
To can tar, split and ftp a directory with one command line you need the following:
split command write to the standard output only, so you can’t pass the file to another command like ftp to process it, to do so you need to patch split to can use the —filter option to can pass the output file to ftp «on the fly» without having to save to hard disk by setting up the $FILE environmental variable with the output file (the file names would be x00, x01, x02 . ).
1) Here is the split patch: http://lists.gnu.org/archive/html/coreutils/2011-01/txt3j8asgk8WH.txt After patching split command, you would see in the man that the —filter option available in your split command.
2) install the ncftp ftp client which is a good ftp client that allows you to connect to ftp and put file in one line command, without waiting for the ftp response like ordinary ftp client. the ncftp is useful to integrate with scripts and so on.
here is the command that would compress /home directory with tar split it to 100MB small files and transfer each file through FTP
note that we used the ncftpput that would pass the $FILE to ftp in single command too. additional ftp options: -r 10: allows you to try to reconnect 10 times after loosing connection with ftp. -F: To use passive mode. -c: takes the input from stdin.
To merge the split files (x00, x01, x02, x03 . ) to can extract the file use following command
Источник