lancer_serega
@lancer_serega
PHP Developer

Как в bash найти подстроку в строке и записать ее в переменную?

Пытаюсь написать скрипт который будет выкачивать дамп БД по через lftp.

lftp -u user,password ftp.server.ru << EOF
ls
bye
EOF


Отработка вот что пишет
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-22                                  
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-23
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-24
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-25
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-26
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-27
drwxr-xr-x   1 8000027  8000027         0 Nov 28 14:48 2017-11-28


Мне нужно перейти в последнюю папку, и скачать последний файл с расширением .tgz

Пытался пользоваться и grep и sed но не помогло (либо не смог)

Помогите пожалуйста! Очень Вас прошу!
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
ДА пожалуйста:
читает список текущих бд создает архив каждой по отдельности ( елси нужно можно архивить сразу там же)
#Создаем папку для архивов. -p не ругается когда папка уже есь
mkdir -p /var/backup/mysql/`date +%Y`
mkdir -p /var/backup/mysql/last

#прячем от умных, и так не зайдут но все же.
chmod 700 /var/backup/mysql
chmod 700 /var/backup/mysql/last

# делаем сам дапм файлов sql, свежинькие файлы лежат всегда в ней, очень удобно не нужно заходить в архивы и искать там вчерашние базы, и логируется.
for i in `mysql -uroot -pТУТ_ПАРОЛЬ_РУТА_БД -e'show databases;' | grep -v information_schema | grep -v Database`; do mysqldump -uroot -pТУТ_ПАРОЛЬ_РУТА_БД $i > /var/backup/mysql/last/$i.sql;done >> /dev/null 2>> /var/log/sqlbackup.log
# Архивируем дамп, ну и логируем разумеется
cd /var/backup/mysql/
tar -zcvpf /var/backup/mysql/`date +%Y`/sqldump-`date +%Y-%m-%u`.tar.bz2 ./last >> /dev/nool >> /var/log/sqlbackup.log
# Конец скрипта

Это если делать на той стороне, но смысл особо не меняется.
По сути вам нужно с нрего вот это
for i in `mysql -uroot -pТУТ_ПАРОЛЬ_РУТА_БД -e'show databases;' | grep -v information_schema | grep -v Database`; do

Остальное так почитать
Все что вам остается это выполнить команду на удаленом сервере
https://www.shellhacks.com/ru/ssh-execute-remote-c...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы