Загрузка-выгрузка файлов по rdp с докачкой

Послесловие

Как я уже сказал и Вы сами наверное осознали — использование подобного bat файл ‘а зачастую экономит кучу времени, т.е. один раз написал и периодически запускаешь одним кликом и вместо многоминутных тычков мышкой и ползания по всем папкам получаешь автоматизированный процесс копирования.

При желании можно поставить запуск этого bat-ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup’ов.

Если есть какие-то вопросы или проблемы — спрашивайте. Как всегда помогу чем смогу ;)

PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела «Автоматизация администрирования».. так что можете собой гордится :)

Как будет работать автоматизация

Мы научились создавать бэкапы, но пока всё делается вручную. Это не дело — нужно, чтобы компьютер следил за этим сам.

Самый простой способ автоматизировать бэкапы — настроить выполнение команд по времени, например каждые 10 минут. Работает это так:

  1. Когда проходят очередные 10 минут, компьютер запускает нашу команду на создание бэкапа.
  2. Если флешка вставлена — всё отлично, бекап делается, данные в безопасности.
  3. Если флешка не вставлена — компьютер попытается выполнить нашу команду, не найдёт флешки и просто закончит выполнение команды.
  4. В итоге достаточно будет вставить флешку, и через 10 минут у вас начнёт создаваться актуальная резервная копия всех важных данных.

Интервал в 10 минут мы выбрали сами — можно поставить и раз в минуту, и раз в день, всё зависит от того, насколько часто у вас обновляются за день нужные данные.

Создание задачи по автоматическому завершению работы компьютера

Бегать выключать компьютеры требует слишком много времени, поэтому можно настроить выключение компьютера при помощи планировщика заданий Windows.
Заходим в меню «пуск» \ «все программы» \ «стандартные» \ «служебные» \ «планировщик заданий». Нажимаем «создать задачу».

Во вкладке «Общие» необходимо указать имя задачи, например завершение работы компьютера. Далее переходим во вкладку «Триггеры».

Во вкладке триггеры нажимаем кнопку «Создать». Выбираем пункт «Ежедневно», а также указываем время, в которое необходимо инициировать выключение компьютера. Нажимаем «Ок».

Далее переходим во вкладку «Действия». Нажимаем кнопку «Создать». В поле «Программа или сценарий» нужно написать «shutdown», а в поле «Добавить аргументы» необходимо написать «-s -f».

Команда «shutdown» с аргументами «-s» и «-f» инициирует принудительное выключение компьютера.

Синтаксис и параметры robocopy

Robocopy имеет много параметров, которые на первый взгляд могут показаться сложными, но имея под рукой документацию, вы с легкостью разберетесь и сможете править скрипты под себя.

Синтаксис robocopy состоит из двух обязательных параметров (исходный и целевой каталог) и двух необязательных (фильтр файлов и параметры):

robocopy

Поддерживаются как локальные пути, так и UNC, например, \\server\directory

Полный синтаксис утилиты robocopy (все параметры и их описания) доступны по команде:

Поскольку ключей в robocopy много, мы будем рассматривать их на практике, в готовых командах. Мы не будем рассматривать самые простые примеры использования robocopy, т.к. обычно они не вызывают вопросов. Ниже представлены готовые к применению более сложные команды robocopy, которые можно использовать в реальных сценариях.

Скрипт 1 бэкап только файлов с ротацией бэкапов

Вы можете использовать этот скрипт для создание локальных резервных файлов, но он создавался для хранения в примонтированные директории, при помощи технологии FUSE (ftp, ssh).

#!/bin/bash
 
# Author: Hosting Consultant https://dieg.info
# Description: Бэкап файлов сайта, без БД
# хранение на удаленном хранилище FUSE
 
# Название проекта, используется для формирования имен
SITENAME="conf_task43.examle.com"
# Путь к директории виртуального хоста
SITEDIR="/var/www/examle.com/"
# Папка для локального бэкапа
DIRBACKUP="/home/ftp_share/ftp_backup"
NOW=$(date +"%Y-%m-%d-%H-%M-%S")
# Количество сохраняемы бэкапов (файлов)
BACKUPS=20
 
# Создаем бэкап сайта локально.
usrbintar -czf $DIRBACKUP$SITENAME-$NOW.tar.gz $SITEDIR 
 
check=$(ls "$DIRBACKUP" | wc -l)
 
if  $check -gt $BACKUPS 
then
	FILEDEL=$(ls -lt "$DIRBACKUP" | awk 'END{print $9}')
#echo $DIRBACKUP/$FILEDEL
usrbinrm $DIRBACKUP$FILEDEL
#else
#   echo 'Лимит бэкапов не достигнут'
fi

Меняем формат файла и пробуем его запустить

Сначала открываем «Мой компьютер», там переходим «Сервис» — «Свойства папки» — «Вид» и снимаем галочку «Скрывать расширение для зарегистрированных типов файлов».

Жмем «Применить» и «Ок». Теперь мы можем менять расширение известных системе файлов, а посему направляемся к нашему файлику, жмем правой кнопкой мышки, выбираем «Переименовать» и методом печатания на клавиатуре меняем расширение с txt на bat (на вопрос системы стоит ли это делать отвечаем утвердительно).

В результате мы имеем следующую картину (в вашем случае файлик называется иначе, но имеет тот же формат):

Собственно, все, что нам остается — это запустить этот файл простым кликом по нему мышки.

Если Вы все сделали правильно, то перед Вами промелькнет консоль и по известному пути появится новая папочка с заданным заранее названием и файлами внутри скопированными из известной Вам папки, т.е картина получится примерно следующая:

Ну или несколько другая, в зависимости от того какие пути и названия папок Вы прописывали в команде.
Отредактировать файлик можно сменив ему расширение обратно на .txt и открыв любым текстовым редактором.

Robocopy: перемещение файлов

С помощью ключа /mov или /move вы можете переместить файлы (а точнее удалить успешно скопированные файлы из исходной директории):

robocopy C:\source\ F:\dest\ /MOVE /E /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log

/MOVE – удалить файлы и директории из исходной папки, после того как они были скопированы. Имейте в виду, что этот ключ нужно использовать вместе с /E или /S, в противном случае вы перенесете только файлы, но не директории. Если вы хотите перенести только файлы, используйте ключ /MOV

  • Если вы используете ключ /MOVE с ключом /E, то вы перенесете все файлы, директории (включая файлы внутри них) и пустые директории. Файлы и директории удалятся из исходной папки. /MOVE с /S даст такой же результат, но пустые директории не перенесутся и будут удалены.
  • Если вы используете ключ /MOV с ключом /E, то вы перенесете все файлы, включая те, которые находятся в директориях и поддиректориях, также скопируются все директории (включая пустые), но они не будут удалены из исходного каталога, в отличие от файлов. Используя /MOV с /S, вы получите такой же результат, но пустые директории не будут скопированы.

Как создать bat файл и использовать его

Давайте подготовим небольшое тестовое поле, чтобы было на базе чего экспериментировать. Откройте мой компьютер и создайте на диске C:\ папочку test. Зайдите в неё и создайте в ней папку testcopy.

Накидайте туда файлов (штук 5-10) — фотки, документы и тд и тп (любых короче). Поле для экспериментов готово. Далее нам надо создать, собственно, сам bat файл по нажатию на который у нас будет происходить копирование папки C:\test\testcopy в, скажем, папку C:\test\backup. Создавать вторую папку (которая backup) не надо — она будет появляться автоматически.

Создать bat очень просто

Жмем правой кнопкой мышки там где хотим его создать (расположение не важно — можно прямо на рабочем столе) и выбираем «Создать» — «Текстовый документ»

Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt.

Основные возможности Robocopy

Кроме обычного копирования файлов и папок из папки источника в каталог назначения, в Robocopy есть множество очень полезных функций:

  • Устойчивость к обрывам сети (robocopy может продолжить копирования после восстановления сетевого доступа);
  • Корректное копирование файлов с их атрибутами и NTFS правами доступа;
  • Копирование с сохранением исходной временной метки;
  • Возможность копирования файлов и директорий, запрещенных для доступа даже администратору, с помощью ключа /B (ключ позволяет игнорировать проверку прав доступа, ключ доступен только для участников группы Администраторы или Операторы архива);
  • Возможность задать количество попыток копирования файла, если файл недоступен;
  • Режим полного зеркалирования директорий;
  • Пропуск уже существующих файлов (с одинаковым размером или временной меткой timestamp);
  • Индикатор прогресса копирования;
  • Корректная работа с длинными путями (более 260 символов);
  • Эффективные алгоритмы и многопоточность позволяют выполнять копирование файлов намного быстрее, чем обычное копирование средствами Windows;
  • Поддержка коды возврата (что позволяет использовать robocopy в различных внешних скриптах и утилитах).

Официальной графической версии robocopy (c GUI) от Microsoft нет. Существуют пользовательские версии, но их поддержка прекращена. Список неофициальных GUI для robocopy (это сторонние программы):

  • EazyCopy
  • RoboMirror
  • RichCopy

Все то же самое, только под Windows: cwRsync

В природе существует такая замечательная штука, как cygwin — маленькая программа для создания UNIX-среды в Windows. Когда речь заходит о чем-то, что работает только под UNIX, но хотелось бы запустить это под Windows, первым делом вспоминают про cygwin.

Так вот, на базе cygwin был создан cwRsync — аналог rsync, работающий под Windows, что позволяет распространить преимущества rsync на Windows-машины. cwRsync существует в двух ипостасях:
— собственно, программа rsync, которую можно запустить под Windows;
— Windows-сервис, предоставляющий извне доступ к данным, подлежащим резервному копированию (напомню, идеология rsync предполагает наличие утилиты по обе стороны сети).

Насколько я понимаю, недавно cwRsync стал коммерческим продуктом, но бесплатную версию по-прежнему можно скачать здесь. О том, как его настраивать, написано здесь.

Копирование с удалённого компьютера и на удалённый компьютер (scp и sftp)

Пакет OpenSSH также включает две программы, которые используют зашифрованный туннель SSH для копирования файлов по сети. Первая программа — scp («безопасное копирование») похожа на программу для копирования файлов.

Вторая программа для копирования файлов через SSH — это sftp. Как следует из её имени, она является безопасным заменителем ftp программ. sftp работает как и оригинальная ftp программа. Тем не менее вместо отправки данных в виде простого текста, она использует зашифрованный туннель SSH. Важным преимуществом sftp перед ftp является то, что для неё не требуется запущенный FTP сервер на удалённом хосте. Для неё требуется только SSH сервер. Это означает, что любая удалённая машина, на которой запущен SSH сервер, может также быть использована как FTP-подобный сервер.

Итак, обе команды:

  • работают через SSH соединения
  • передают данные по зашифрованным каналам
  • не требуют специального сервера или программ на удалённой машине кроме SSH сервера
  • используют все возможности SSH, например, аутентификацию по публичному ключу и сжатие передаваемых данных

Различия команд:

  • scp не работает в интерактивном режиме, а sftp умеет работать в интерактивном режиме и в автоматическом
  • в интерактивном режиме sftp поддерживает синтаксис FTP команд для различных действий в файловой системе (копирование и перемещение файлов, создание и удаление файлов и папок и т.д.)
  • sftp умеет дописывать частично переданные файлы, если произошёл обрыв при передаче большого файла (настраивается опцией)
  • sftp поддерживает пакетный режим — файлы, в которых последовательность действий определена последовательностью команд sftp
  • популярные файловые менеджеры понимают протокол sftp и могут интегрироваться с этой командой — подробности ниже
  • при рекурсивном скачивании или закачивании папок, по умолчанию scp следует по символическим ссылкам, а sftp — нет

Полные бэкапы

Будем размещать резервные копии на сервере . Копировать будем в сетевую шару , где — директория с именем сервера на бэкапном. Таким образом в одной директории будут храниться бэкапы с разных серверов.
На сервере с резервными копиями для каждой из них будем создавать директорию с текущей датой в качестве имени. Для удобства поместим исходные пути, которые нужно забэкапить, в файлик . Переносим всё это дело «на клавиатуру» и получаем такой скрипт:

set backupdir=\\srv-bak\bak\srv01
IF NOT EXIST %backupdir% (
	mkdir %backupdir%
)

set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
set ndate=%y%%m%%d%

set dirsfile=D:\backup\dirs.txt

set dstpath=%backupdir%\%ndate%
IF NOT EXIST %dstpath% (
	mkdir %dstpath%
)

for /f "eol=; tokens=1 delims=" %%i in (%dirsfile%) do (
	mkdir "%dstpath%%%~pi%%~ni"
	robocopy "%%~di%%~pi%%~ni" "%dstpath%%%~pi%%~ni" /E /ZB /NP
)

Чтобы всё работало автоматически, добавляем скрипт в планировщик. Таким (простым!) способом можно бэкапить достаточно большие объемы. Единственный, но существенный, наблюдаемый баг — если какой-то из копируемых файлов занят, скрипт отработает некорректно.

Добавляем в файл команду, например, для копирования

Далее, собственно, нам в этот файлик нужно ввести команду, которая будет воспроизводиться по средством консоли ( cmd ) при запуске этого файла. В данном случае мы воспользуемся командой xcopy ибо именно она позволяет копировать файлы, каталоги и подкаталоги. Учитывая все пути у нас получится следующая команда:

xcopy C: est estcopy C: estackup /f /i /y /s

Разъясняю что тут к чему:

  • xcopy — это сама команда;
  • C: est estcopy — это источник, т.е. папка откуда копируются файлы и каталоги;
  • C: estackup — это результат, т.е. место, куда будут скопированы файлы и каталоги;
  • /f /i /y /s — дополнительные параметры синтаксиса для команды xcopy (см.синтаксис ниже по тексту).

Количество строчек может быть любым, т.е. если Вам надо скопировать 100 папок, Вы пишете 100 строчек в одном файле и меняете в них только пути.

Далее, касательно синтаксиса (какие дополнительные параметры есть, какие можно дописать и зачем они нужны).

Какие есть (т.е. те, что я указал в данном примере):

  • /f — выводит имена исходных файлов и файлов-результатов в процессе копирования
  • /i — создает новый каталог в случае, если тот отсутствует в конечном пути
  • /y — перезаписывает файл в случае, если он уже есть
  • /s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.

Как по мне — это основной список параметров необходимых для «тихого» копирования, т.е. без лишних вопросов о перезаписи, создания каталогов и прочей шушеры. Касательно остального синтаксиса можно почитать, например, тут.

Далее нам надо сменить формат файла с txt на bat . Делается это следующим образом.

Windows

Прежде всего включим возможность обмена файлами по локальной сети в настройках. Откройте «Панель управления» и перейдите в «Сеть и интернет» → «Параметры общего доступа». Выберите сеть, к которой вы подключены, и активируйте опции «Включить сетевое обнаружение» и «Включить общий доступ к файлам и принтерам».

Теперь щёлкните правой кнопкой мыши по папке, которую вы хотите сделать общей, и выберите «Параметры». В параметрах папки, на вкладке «Общий доступ», установите настройки доступа, открыв для всех пользователей вашей локальной сети возможность записывать и читать файлы в общей папке.

Чтобы просматривать папки, открытые в вашей локальной сети, в «Проводнике» выберите «Сеть» в боковой панели.

Послесловие

Как я уже сказал и Вы сами наверное осознали – использование подобного bat файл ‘а зачастую экономит кучу времени, т.е. один раз написал и периодически запускаешь одним кликом и вместо многоминутных тычков мышкой и ползания по всем папкам получаешь автоматизированный процесс копирования.

При желании можно поставить запуск этого bat -ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup ‘ов.

Если есть какие-то вопросы или проблемы – спрашивайте. Как всегда помогу чем смогу

PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела » Автоматизация администрирования «.. так что можете собой гордится

Послесловие

Как я уже сказал и Вы сами наверное осознали — использование подобного bat файл ‘а зачастую экономит кучу времени, т.е. один раз написал и периодически запускаешь одним кликом и вместо многоминутных тычков мышкой и ползания по всем папкам получаешь автоматизированный процесс копирования.

При желании можно поставить запуск этого bat -ника в определенные дни через планировщик Windows (или другие программы позволяющие это делать) и вообще забыть о проблеме долгих ручных backup ‘ов.

Если есть какие-то вопросы или проблемы — спрашивайте. Как всегда помогу чем смогу

PS: Если мне не изменяет память, то это кусочек темы из умных админских книжек, а именно из раздела » Автоматизация администрирования «.. так что можете собой гордится

7 апреля

Набросал ещё один маленький BAT скрипт для резервного копирование папки. Внесите свои данные и через scheduler настройте расписание резервного копирования.

Функции

  • С помощью xcopy делает резервные копии папки.
  • Каждый бэкап сохраняется в отдельную подпапку вида DD.MM.YYYY_hhmmmss.
  • С помощью 7-Zip архивирует резервные копии.
  • Удаляет старые резервные копии.
  • DirName — название папки
  • SourceDir — что бэкапим
  • BackupDir — куда бэкапим
  • NumFolders — сколько подпапок с бэкапами хранить
  • a7z — путь к 7z.exe

Пример настройки расписания

В Task Scheduler настраиваем новое задание.

Выбираем пользователя, от имени которого будет выполняться резервное копирование. После сохранения задания нас спросят пароль от него. Ставим галку Run whether user is logged or not — запускать даже если юзер не залогинен.

В триггерах настраиваем расписание. У меня резервное копирование происходит раз в сутки.

Указываем ссылку на наш BAT файл.

Проверяем настройки. OK.

Теперь папка будет резервироваться раз в день. С настройкой NumFolders=10 в BAT файле мы будем хранить данные за последние 10 дней.

Если хотите хранить ежедневные и ежемесячные резервные копии — сделайте два BAT файла и два расписания резервного копирования в разные папки.

Коды возврата (ошибки) robocopy

Ниже приведены стандартные коды возврата robocopy, которые можно использовать для обработки различных ошибок, которые возвращает утилита после выполнения действия копирования (кот возврата эта битовая маска).

Hex Decimal Meaning if set
0x00 No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.
0x01 1 One or more files were copied successfully (that is, new files have arrived).
0x02 2 Some Extra files or directories were detected. No files were copied Examine the output log for details.
0x04 4 Some Mismatched files or directories were detected. Examine the output log. Housekeeping might be required.
0x08 8 Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.
0x10 16 Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories.
Коды возврата могут комбинироваться:
0x03 3 (2+1) Some files were copied. Additional files were present. No failure was encountered.
0x05 5 (4+1) Some files were copied. Some files were mismatched. No failure was encountered.
0x06 6 (4+2) Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory
0x07 7 (4+1+2) Files were copied, a file mismatch was present, and additional files were present.

Любое значение больше 7 говорит о том, что при копировании через robocopy возникла ошибка. Вы можете обрабатывать эти ошибки в bat файле:

if %ERRORLEVEL% EQU 16 echo ***FATAL ERROR*** & goto endif %ERRORLEVEL% EQU 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto endif %ERRORLEVEL% EQU 14 echo FAIL + MISMATCHES + XTRA & goto endif %ERRORLEVEL% EQU 13 echo OKCOPY + FAIL + MISMATCHES & goto endif %ERRORLEVEL% EQU 12 echo FAIL + MISMATCHES& goto endif %ERRORLEVEL% EQU 11 echo OKCOPY + FAIL + XTRA & goto endif %ERRORLEVEL% EQU 10 echo FAIL + XTRA & goto endif %ERRORLEVEL% EQU 9 echo OKCOPY + FAIL & goto endif %ERRORLEVEL% EQU 8 echo FAIL & goto endif %ERRORLEVEL% EQU 7 echo OKCOPY + MISMATCHES + XTRA & goto endif %ERRORLEVEL% EQU 6 echo MISMATCHES + XTRA & goto endif %ERRORLEVEL% EQU 5 echo OKCOPY + MISMATCHES & goto endif %ERRORLEVEL% EQU 4 echo MISMATCHES & goto endif %ERRORLEVEL% EQU 3 echo OKCOPY + XTRA & goto endif %ERRORLEVEL% EQU 2 echo XTRA & goto endif %ERRORLEVEL% EQU 1 echo OKCOPY & goto endif %ERRORLEVEL% EQU 0 echo No Change & goto end:end

Утилита robocopy имеет огромный функционал и позволяет гибко настроить операции копирования

Как альтернативу robocopy в PowerShell можно использовать командлет Copy-Item, который хоть и менее функционален, но работает с объектной моделью PowerShell, что может быть важно, если вы часто используете PowerShell или используете цепочки автоматизации с другими языками программирования

Выгрузка файла на удаленный компьютер

Шаг 1. Подключитесь к удаленному компьютеру

Запустите соединение с вашего устройства на удаленный компьютер и щелкните по значку !M удаленного рабочего стола, чтобы открыть его меню (рис. 6).

Рис. 6. Щелкните по монитору Monitor удаленного рабочего стола для отображения меню

Шаг 2. Выберите файл, который желаете переместить

Нажмите «Отправить файл с клиента» и выберите «На этот компьютер» (в качестве последнего выступает удаленный компьютер, к которому вы только что подключились) (Рис. 7).

Рис. 7. При выборе параметра «На этот компьютер» начнется передача файла с локальной клиентской машины на удаленный компьютер

При этом всплывет окно локального диспетчера файлов/проводника, с помощью которого следует перейти к папкам вашего локального компьютера и выбрать передаваемый файл (Рис. 8).

Рис. 8. Выберите локальный файл, который желаете передать на удаленный рабочий стол

Шаг 3. Выберите папку назначения

После этого всплывет второе диалоговое окно, в котором можно выбрать папку назначения на удаленном ПК или компьютере Mac, в которой следует сохранить передаваемый вами файл (Рис. 9).

Рис. 9. Выберите папку назначения на удаленном рабочем столе, в которую необходимо переместить новый файл

Шаг 4. Передача файлов завершена

Вот и все! Для доступа к переданному на ваш удаленный компьютер файлу выберите «Показать состояние передачи» в мониторе Monitor (Рис. 10).

Рис. 10. При нажатии «Показать состояние передачи» на мониторе удаленного рабочего стола отобразится состояние всех перемещений файлов на ваш удаленный компьютер

Записки по настройке Debian Ubuntu и Microsoft Windows

Скрипт для копирования файлов с проверкой и записью в лог-файл

Скрипт для копирования файлов с проверкой и записью в лог-файл

robocopy (от англ. Robust File Copy) — утилита командной строки для репликации (не просто копирования) каталогов (папок). Она была доступна как часть Windows Resource Kit и представлена как стандартный компонент Windows Vista, Windows 7 и Windows Server 2008.

Что выполняет скрипт:

— копирует файлы из заданной папки;

— с введение лога, пишим имена скопированных файлов;

— и перед следующим копированием сверяем с записью в логах, если есть файл в логах — то его не копируем, если в логах отсутствует — копируем.

:: ( кодировка Dos 866 если имеется названия папок по русски ) @Echo off :: ( путь откуда, без кавычек) set $from=_ПУТЬ_ОТКУДА_ :: ( куда, без кавычек ) set $dest=_КУДА_ :: set $log=_ПУТЬ_ЛОГ_ФАЙЛА\copyfile.log for /f «delims=» %%i in (‘dir «%$from%» /B/A:-D’) do Call :CheckLog «%%i» :CheckLog If Exist «%$log%» For /f «delims=» %%a in (%$log%) Do If «%%a»==»%

1″ Exit /B robocopy «%$from%» «%$dest%» «%

1″ /minage:0 if %errorlevel%==1 (echo.Copy is successful — %

/MINAGE:n :: Минимальный возраст файла — исключить файлы, возраст которых менее n дней.

p.s.s Утилита robocopy это отличнейшая вещь, очень гибкий инструмент копирования и бэкапа. Вот не больший пример для backup

> robocopy С:\исходная_папка \192.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /R:2 /W:5

В данном примере:

Мы копируем папку «исходная папка», находящуюся на локальном диске С:

Мы копируем эту папку на компьютер \192.168.0.1 в папку «целевая папка»

/E : Мы копируем все подпапки и файлы

/Z : Включаем поддержку докачки (на случай обрыва связи)

/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)

/DCOPY:T : Копируем время создания папок

/M : Копируем только файлы с установленным атрибутом «A — Архивный» и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.

/R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.

/W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.

Заметка. Очень рекомендую задавать вручную параметры /R и /W, иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.

Скрипт 2 бэкап только БД MySQL с ротацией директорий бэкапов

Вы можете использовать этот скрипт для создание резервных файлов БД MySQL, но скрипт создавался для хранения в примонтированные директории, при помощи технологии FUSE (ftp, ssh).

#!/bin/bash
 
# Author: Hosting Consultant https://dieg.info
# Description: Бэкап только БД MySQL
# хранение на удаленном хранилище FUSE
 
# Название проекта, используется для формирования имен
SITENAME="db_task43.example.com"
NOW=$(date +"%Y-%m-%d") # Формат даты для имен
NOWF=$(date +"%Y-%m-%d-%H")
 
# Папка для локального бэкапа
DIRBACKUP="/home/ftp_share/ssh_backup/$NOW"
mkdir $DIRBACKUP
DIRLSBACKUP="/home/ftp_share/ssh_backup"
# Количество сохраняемы бэкапов (файлов)
BACKUPS=2
 
### MySQL Setup ###
MYSQLU="user" # Пользователь MySQL
MYSQLP="password" # Пароль пользователя MySQL
DBNAME="userdb" # Название базы MySQL
 
# Создаем бэкап базы данных MySQL. 2>/dev/null
usrbinmysqldump --no-tablespaces -u$MYSQLU -p$MYSQLP $DBNAME > $DIRBACKUP$SITENAME-$DBNAME-$NOWF.sql
# Архивируем
cd $DIRBACKUP
usrbintar -czf $DIRBACKUP$SITENAME-$DBNAME-$NOWF.tar.gz $DIRBACKUP$SITENAME-$DBNAME-$NOWF.sql
# Удаляем бэкап MySQL
usrbinrm -f $DIRBACKUP$SITENAME-$DBNAME-$NOWF.sql
 
check=$(ls "$DIRLSBACKUP" | wc -l)
 
if  $check -gt $BACKUPS 
then
	FILEDEL=$(ls -lt "$DIRLSBACKUP" | awk 'END{print $9}')
#echo $DIRLSBACKUP/$FILEDEL
usrbinrm -Rf $DIRLSBACKUP$FILEDEL
#else
#   echo 'Лимит бэкапов не достигнут'
fi

Часть пятая. Прочие возможности bat-файлов

Возможностей, на самом деле, огромное множество. Здесь для примера рассмотрим некоторые из них.

@echo off
chcp 1251
dir >file.txt

После выполнения этого файла, в папке, откуда он запускался, будет создан файлик file.txt, содержащий перечень всех файлов и папок в этом каталоге с указанием размера и даты последнего изменения. Можно преобразовать этот файл до вида

@echo off
chcp 1251
dir /S "c:\" >"X:\file.txt"

/S заставит батник показать содержимое не только каталога, но и всех подкаталогов.c:\ поможет отобразить содержимое не того каталога, откуда запускается бат-файл, а нужного нам.X:\file.txt сохранит конечный файл со списком содержимого в указанное нами место;

Запуск файлов из командной строки 

Очень часто полезным оказывается возможность запуска объектов из командной строки (в данном случае уже из бат-файлов). Причем как программ, так и других видов файлов (графических изображений, медиафайлов, текстовых документов и т.п.)
К примеру, если в автозагрузку добавить текстовый документ, то при включении ПК после загрузки системы вы его сразу увидите. Либо откроется плеер и будет проигрывать соответствующий трек. (Подробнее про способы добавления файлов в автозагрузку вы можете прочитать в статье: Автозагрузка. Добавление приложений в автозагрузку Windows)
Для того, чтобы это реализовать, нужно просто в теле бат-файла прописать точный путь до необходимого объекта. Например

@echo off
chcp 1251
"c:\Документы\напоминание.doc"

Для системных же программ нужно указать лишь её обозначение.

@echo off
chcp 1251
calc

При выполнении этого батника откроется калькулятор. В данном случае строчку chcp 1251 можно опустить (как и в некоторых ситуациях из примеров выше), однако если уж стандартизировать все наши пакетный файлы, то её можно и оставить, вреда не будет.

Заключительные замечания

Вместо копирования по сети иногда бывает полезным разбиение этой задачи на 2 части: монтирование шары как локального диска и последующее копирование (и размонтирование по окончании). Приведённые скрипты несложным образом дорабатываются до такой версии.
Также, на принимающем сервере возможно организовать архивирование резервных копий. Если для сервера бэкапов используется , то в шелле это элементарно делается периодическим выполнением в директории с бэкапами архивации вроде:

find -mindepth 2 -maxdepth 2 -type d -ctime +7 -execdir /usr/local/bin/tar_and_remove.sh "{}" \;

или

find -mindepth 2 -maxdepth 2 -type d -ctime +7 -execdir rar a -t -m5 -r -rr1 -df -inul "{}.rar" "{}" \; &> /dev/null

Кроме этого, с никсового сервера эти бэкапы очень удобно копировать с помощью .

Как создать bat файл и использовать его

Давайте подготовим небольшое тестовое поле, чтобы было на базе чего экспериментировать. Откройте мой компьютер и создайте на диске C: папочку test . Зайдите в неё и создайте в ней папку testcopy .

Накидайте туда файлов (штук 5-10 ) – фотки, документы и тд и тп (любых короче). Поле для экспериментов готово. Далее нам надо создать, собственно, сам bat файл по нажатию на который у нас будет происходить копирование папки C: est estcopy в, скажем, папку C: estackup . Создавать вторую папку (которая backup ) не надо – она будет появляться автоматически.

Создать bat очень просто

Жмем правой кнопкой мышки там где хотим его создать (расположение не важно – можно прямо на рабочем столе) и выбираем » Создать » – » Текстовый документ »

Задаем созданному файлу название и открываем его блокнотом или любым другим текстовым редактором. Т.е. на данный момент мы имеем открытый текстовый файлик, который называется, допустим, копирование.txt .

Восстановление из резервной копии

Для восстановления файлов из резервной копии необходимо запустить мастер. Для этого запускаем Ярлык «Duplicati» с рабочего стола или из меню пуск. В первом окне мастера выбираем пункт «Восстановить файлы из резервной копии». Нажимаем «Далее».

Далее выбираем задание и нажимаем «Далее».

Далее программа найдет резервные копии, и предложит из каких можно восстановить с указанием даты их создания. Выбираем нужную и нажимаем «Далее».

Теперь необходимо указать в какую папку восстановить файлы из резервной копии. Указываем и нажимаем «Далее».

Нажимаем кнопку «Завершить».

Далее начнется процесс восстановления.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
PR-HOST
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: