LINUX.ORG.RU

Резервное копирование папок


0

1

Собственно хочу автоматизировать процесс резервного копирования базы 1с, с виндового компа, к себе в файловое хранилище. Делаю это так

# Монтирование расшаренной папки 1С
mount -t smbfs //192.168.1.3/базы /mnt/192.168.1.3/базы -o password=

# Копирование бызы 1С с заменой файлов
cp -r /192.168.1.3/базы /mnt/md3/1c_base

# Размонтирование расшаренной папки 1С
umount /mnt/192.168.1.3/базы
Подскажите как сделать чтобы размонтирование проходило только после полного завершения процесса копирования? Или Cron и так выполнит команды в строгой последовательности?

ты эти команды в кронтаб пишешь или в скрипт, а его уже из кронтаба вызываешь? если в скрипт, то он выполнится последовательно.

maloi ★★★★★
()

Подскажите как сделать чтобы размонтирование проходило только после полного завершения процесса копирования?

все команды через && , нет?
P.S. странная подсеть для предприятия...

comp00 ★★★★
()

Вот именно, как сказал comp00 && еще не отменили.
Все это можно сделать в 1 строчку.

hbars ★★★★★
()

Или Cron и так выполнит команды в строгой последовательности?

cron вообще ничего не выполнит, потому что то, что Вы написали, не является правильным конфигом cron.
Или это шелл-скрипт?

AITap ★★★★★
()
Ответ на: комментарий от maloi

В кронтаб буду писать. Примерно так

# Монтирование расшаренной папки 1С
*/50 12 * 82	mount -t smbfs //192.168.1.3/базы /mnt/192.168.1.3/базы -o password=123
#
# Копирование бызы 1С с заменой файлов
*/50 12 * 82	cp -r /192.168.1.3/базы /mnt/md3/1c_base
#
# Размонтирование расшаренной папки 1С
*/50 12 * 82	umount /mnt/192.168.1.3/базы
Адреса и время выполнения, указанны конечно весьма условно.

Humaxoid
() автор топика
Ответ на: комментарий от Humaxoid

Так вот вы какие, 1С админы.[ушел и застрелился]

sdio ★★★★★
()

Подскажите как сделать чтобы размонтирование проходило только после полного завершения процесса копирования

Для этого это должно быть одно правило cron; в нем или однострочник, или запуск скрипта из файла.

Если однострочник, рекомендую так: mount ... && cp ... ; umount ... . Таким образом cp выполнится только в том случае, если mount будет успешен, а umount - в любом случае. Удобно, чтобы обойти возможные ошибки (например, если шара не примонтируется). В bash скриптах && - логическое И, || (или точка-с-запятой ; , или новая строка если в отдельном файле) - логическое ИЛИ. То есть в комбинации cmd1 && cmd2 , cmd2 выполнится только если выполнение cmd1 было успешным. А вот если перед umount поставить '&&' , то, в случае неуспешного копирования, шара не будет отмонтирована; это ведь не то что нам нужно, правда?

А вообще, я бы написал отдельный скриптик (в смысле поместил бы в отдельный файл), в котором по сути должно быть то же самое - глаза меньше ломает.

Kroz ★★★★★
()
Ответ на: комментарий от Humaxoid

В кронтаб буду писать. Примерно так

Нет! Должно быть одно правило.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Для этого это должно быть одно правило cron; в нем или однострочник, или запуск скрипта из файла.

Если однострочник, рекомендую так: mount ... && cp ... ; umount ... . Таким образом cp выполнится только в том случае, если mount будет успешен, а umount - в любом случае. Удобно, чтобы обойти возможные ошибки (например, если шара не примонтируется). В bash скриптах && - логическое И, || (или точка-с-запятой ; , или новая строка если в отдельном файле) - логическое ИЛИ. То есть в комбинации cmd1 && cmd2 , cmd2 выполнится только если выполнение cmd1 было успешным. А вот если перед umount поставить '&&' , то, в случае неуспешного копирования, шара не будет отмонтирована; это ведь не то что нам нужно, правда?

А вообще, я бы написал отдельный скриптик (в смысле поместил бы в отдельный файл), в котором по сути должно быть то же самое - глаза меньше ломает.

Спасибо за развернутый, полный ответ. Наверное точно так и сделаю. Всё запихаю в скрипт, а уже его (скрипт) буду вызывать из кронтаба. А то в глазах рябит.)))

Humaxoid
() автор топика
Ответ на: комментарий от Humaxoid

в crontab одну команду типа:

*/50 12 * * *   sh /root/mycoolbackupscript.sh

В /root/mycoolbackupscript.sh пишешь:

#!/bin/sh
mount -t smbfs //192.168.1.3/базы /mnt/192.168.1.3/базы -o password=123
cp -r /192.168.1.3/базы /mnt/md3/1c_base
umount /mnt/192.168.1.3/базы

И радуешься. Конечно, если все команды без ошибок напишешь...

Pinkbyte ★★★★★
()
Ответ на: комментарий от Kroz

опередил, да и ответ дал более развернутый. Снимаю шляпу...

Pinkbyte ★★★★★
()

а еще есть очень полезная команда rsync (вместо cp)

x905 ★★★★★
()
Ответ на: комментарий от zolden

Без пайпов?
-l тупо отмонтирует файловую систему, и следующее обращение к ней приведёт к ошибке.

AITap ★★★★★
()
Ответ на: комментарий от hbars

Все это можно сделать в 1 строчку.

можно, но не красиво. Проще так:

mount -t smbfs //192.168.1.3/базы /mnt/192.168.1.3/базы -o password=  &&\
cp -r /192.168.1.3/базы /mnt/md3/1c_base &&\
umount /mnt/192.168.1.3/базы
Код читабельнее становится

comp00 ★★★★
()
Ответ на: комментарий от AITap

Я имел в виду в контексте данной задачи.
Пока cp читает данные, раздел, по идее, не отмонтируется же?

zolden ★★★★★
()
Ответ на: комментарий от zolden

Изучил man 2 umount и с удивлением обнаружил:
MNT_DETACH (since Linux 2.4.11)
Perform a lazy unmount: make the mount point unavailable for new accesses, and actually perform the unmount when the mount point ceases to be busy.

Но не отмонтирует ли ядро файловую систему в перерыве между двумя копируемыми файлами?

AITap ★★★★★
()
Ответ на: комментарий от AITap

Ну я вот и надеялся, что ты знаешь ответ на этот вопрос
Как определяется busy или нет, я не очень представляю, но была надежда на то, что ср читает быстрее, чем опросы на занятость происходят

zolden ★★★★★
()
Ответ на: комментарий от sdio

Уверен? Эта запись будет срабатывать дважды в день

Кронтаб сделал так.

# Запускаем скрипт копирования однокрасно по будням в 10.00
*/010 * * 1,2,3,4,5    /etc/backup_1c
Ждать нет времени, завтра приду проверю. А сам скрипт рабочий.

Humaxoid
() автор топика
Ответ на: комментарий от The_Ketchup

что значит «просто десять»? У тебя */010 - это и есть каждые десять минут. Именно в 10 минуту будет '10', но никак не '*/010'

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Судя по тому что написано по ссылке которую я привел */10 это 0,10,20,30,40,50 минуты. Прув:

For example, «*/3» in the hour time field is equivalent to «0,3,6,9,12,15,18,21»; «*» specifies 'every hour'

The_Ketchup ★★
()

А почему не rsync? Например rdiff-backup.

kerneliq ★★★★★
()

Резервное копирование папок

Кроме криокамеры ничего и на ум не приходит. Правда, пока еще не придумали технологию разморозки.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.