Хочу бекапы сразу в какой-нить яндекс-диск класть, оставляя лишь последнюю копию.
Поделитесь плз скриптами и тулзами.
Хочу бекапы сразу в какой-нить яндекс-диск класть, оставляя лишь последнюю копию.
Поделитесь плз скриптами и тулзами.
хитрожопый лентяй
(0) именно на яндекс?
http://repo.yandex.ru/yandex-disk/
#!/bin/bash
# Задаем переменные:
TIME=`date +%Y-%m-%d`
GPG_COMMAND="gpg -c -z 0 --batch --passphrase XXXXXXXXXX"
FS_FILE=/tmp/$SERVER_NAME-fs.$TIME.tar.gz.gpg
FS_PGSQL=/tmp/$SERVER_NAME-pgsql.$TIME.sql.gz.gpg
# Бэкапим и шифруем файлы:
tar -cz /home/1С | $GPG_COMMAND > $FS_FILE
# Бэкапим и шифруем БД:
pg_dump --dbname=postgres://postgres:123654@127.0.0.1:5432/test2 | gzip | $GPG_COMMAND > $FS_PGSQL
# Загружаем данные в облако Яндекс
# Для файлового режима:
# curl --user user@yandex.ru:password -T "{$FS_FILE}" https://webdav.yandex.ru/
cp $FS_FILE /mnt/yandex.disk
# Для клиент-серверного режима(SQL):
# curl --user user@yandex.ru:password -T "{$FS_PGSQL}" https://webdav.yandex.ru/
cp $FS_PGSQL /mnt/yandex.disk
# Удаляем файлы старше 30 дней с локального диска
find /tmp/*.gpg -type f -mtime +30 -delete
# Удаляем файлы старше 5 дней с Яндекс-диска.
# curl --user user@yandex.ru:password --request DELETE https://webdav.yandex.ru/1cbase-pgsql.$OLDTIME.sql.gz.gpg
find /mnt/yandex.disk/*.gpg -type f -mtime +5 -delete
В зависимости от того, в каком виде у вас БД (файловая или SQL) закомментируйте ненужные строки. В этом тестовом скрипте, использовался юзер postgres с паролем 123654 и БД — test2. Файловая база находилась в /home/1C.
На тот случай, если необходимо работать с диском яндекса напрямую, я оставил строки с CURL.
Даём скрипту права на запуск:
# chmod 0700 backup.sh
bvn13 Только я на питон переделаю тогда
:) удачи
(7) я про curl , tar, cp и т.п.
(8) В задаче ничего про окружение. Нужна хитрая - бери и пользуй :). У меня все подходит, и база Постгри, и ОСь - Линукс :)
под винду есть цигвин, в нем есть все утилиты из этого скрипта
(14) можно по-подробней? зачем цигвину какой-то путь просмотра? что это за путь должен быть?
когда мы в коммандной строке пишем cp или find система сначали ищет их в текущей директории, затем в путях указанных в path
а как мне запустить скрипт из винды в окружении cygwin?
как и любой другой, это просто набор утилит.
с расширением exe
ps.exe
ls.exe
cp.exe
grep.exe
и т.п.
ок. есть far, есть cygwin
в цигвине создал скрипт:
DIRECTORY='/cygdrive/d/bases1c/test/' find $DIRECTORY -type f -mtime -1 -print
запускаю его из фара:
bash scrpt.sh
результат:
FIND: Недопустимый ключ
Как мне баш-скрипт запустить в окружении цигвина из оболочки винды?
вроде поперло.
надо было к find полный путь писать: /usr/bin/find
теперь нужно придумать, как через curl узнать список файлов по маске на ядиске, решить, кто из них старые и удалить их...
(24) эм... получить список...
нихрена не пойму
файл arc.cmd:
$ cat arc.cmd cd E:\backup_1C\cmd\ make_backup.cmd ou bash backup2yadisk.sh make_backup.cmd buh bash backup2yadisk.sh make_backup.cmd buh_ou bash backup2yadisk.sh make_backup.cmd hrm bash backup2yadisk.sh
файл make_backup.cmd:
$ cat make_backup.cmd sqlcmd -U sa -P }[poiuytr1 -Q "EXEC dbo.sp_BackupDatabases @databaseName='%1',@backupLocation='E:\backup_1C\sql\', @backupType='F'" -o results_%1.log
почему процесс выполнения идет только вот так:
1. запуск make_backup.cmd ou
2. запуск sqlcmd (из файла make_backup.cmd)
3. и тут прерывается?
Почему дальше-то не идет?
надо использовать call