Передача файлов между серверами linux с использованием scp и ftp

Примеры скриптов powershell для системного администрирования

Что такое FTP?

FTP — это сетевой протокол, применяемый для обмена файлами по сети. Он использует порт 21. FTP позволяет вам подключаться к удаленной системе для обмена файлами при помощи команды .

Синтаксис FTP

FTP-синтаксис довольно прост:

Здесь может быть как именем, так и IP-адресом удаленного хоста, к которому вы хотите подключиться.

Команды FTP

FTP-команды напоминают команды Linux. Вот некоторые из них:

Команда Использование
open Открывает удаленное соединение с другим компьютером.
get Копирует файл из удаленной системы в локальную.
put Копирует файл из локальной системы в директорию удаленной.
mget Передача нескольких файлов из удаленной системы в текущую директорию локальной.
mput Передача нескольких файлов из локальной системы в директорию удаленной.
bye/quit Подготовка к выходу из FTP-окружения.
close Закрывает FTP-соединение.
ascii Включает ASCII-режим передачи файлов.
binary Включает бинарный режим передачи файлов.

Как передавать файлы через FTP

FTP предлагает два режима передачи файлов: ASCII и бинарный.

  • ASCII расшифровывается как American Standard Code for Information Interchange («Американский стандартный код для обмена информацией»). Используется для передачи простых файлов, например, текстовых.
  • Бинарный режим используется для передачи нетекстовых файлов, например, изображений.

По умолчанию FTP использует режим передачи ASCII.

Шаг 1 — установка FTP-соединения

В этом примере — удаленный хост. После ввода команды вам будет предложено ввести имя пользователя и пароль.

$ ftp hostA
Connected to hostA.
220 hostA FTP server ready.
Name (hostA:user): user
331 Password required for user.
Password: password
230 User user logged in.
Remote system type is LINUX.

Когда соединение будет успешно установлено, вы заметите символы в начале строки. Это значит, что теперь вы можете вводить FTP-команды.

Вы можете выбрать режим передачи файлов (бинарный или ASCII) в зависимости от их типа.

ftp> ascii
200 Type set to A.

Шаг 3 — передача файла

Здесь мы использовали команду для передачи файла sample.txt с удаленного FTP-сервера на локальную машину.

ftp> get sample.txt
200 PORT command successful.
150 Opening ASCII mode data connection for sample.txt (22 bytes).
226 Transfer complete.
local: sample.txt remote: sample.txt
22 bytes received in 0.012 seconds (1.54 Kbytes/s)

Шаг 4 — завершение сессии

ftp> bye
221-You have transferred 22 bytes in 1 files.
221-Total traffic for this session was 126 bytes in 2 transfers. 221-Thank you for using the FTP service on hostA.
221 Goodbye.

Как передать несколько файлов через FTP

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

используется для скачивания файлов с сервера, а — для заливки на сервер.

ftp> mget sample_file.1 sample_file.2

Здесь мы скачиваем файлы с удаленного хоста на локальную машину.

ftp> mput sample_file.1 sample_file.2

А здесь — наоборот: заливаем с локальной машины на удаленный хост.

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

От редакции Techrocks. К сожалению, автор не раскрыла тему защищенной передачи файлов по FTPS, SFTP и FTP через SSH.

BITS: требования к ОС и версии PowerShell

Протокол BITS был впервые представлен в Windows XP, где утилита bitsadmin.exe может использоваться для управления процессами BITS. Утилита все еще поддерживается, но устарела. Лучше всего использовать специальные командлеты PowerShell для управления процессами BITS.

Для работы по этому сценарию нам потребуется операционная система не ниже Windows Vista или Windows Server 2008 и PowerShell версии не ниже 2.0. Современные версии Windows 10 и Windows Server 2016/2012 R2 полностью поддерживают протокол BITS.

Совет. Вы можете использовать Windows Server 2003. В этом случае вам потребуется установить специальные обновления KB 923845 и PowerShell V2.0.

Поддержка BITS требуется как на стороне клиента, так и на стороне сервера.

Протокол BITS

Служба BITS или фоновая интеллектуальная передача – это служба Windows, используемая для передачи файлов между системами. Используя протокол BITS, можно передавать как загружаемые, так и выгружаемые файлы. Используя этот протокол, компьютеры загружают файлы с серверов при выполнении автоматических обновлений Windows (включая загрузку обновлений с сервера WSUS), при получении программ из точек распространения SCCM и т.д.

Преимущества протокола BITS:

  • BITS – это интеллектуальный протокол, который во время работы может регулировать используемую полосу пропускания канала связи, чтобы не влиять на другие приложения и сетевые службы. BITS может использовать только нераспределенную полосу пропускания канала и динамически изменять скорость передачи данных во время работы (если другие приложения увеличивают нагрузку на сеть, BITS может снизить скорость передачи данных в сети);
  • Загрузка файла может происходить в фоновом режиме, незаметно для пользователя;
  • Процесс BITS в режиме возобновления будет продолжен автоматически, даже если канал связи между компьютером и клиентом прерван или после перезапуска компьютера;
  • В любой момент вы можете приостановить или возобновить загрузку через BITS без потери данных; Возможность перезапуска процедуры копирования файлов по сети также доступна в утилите robocopy.exe, которая позволяет возобновить загрузку файла в случае потери соединения.
  • BITS позволяет расставить приоритеты для задач загрузки;
  • Файлы передаются между компьютерами через порты 80 (HTTP) или 443 (HTTPS), поэтому нет необходимости открывать дополнительные порты на брандмауэрах. Например, порт 445, который используется для копирования при использовании протокола SMB (не забывайте, что в предыдущих версиях протокола SMB 1.0 есть много уязвимостей);
  • На стороне получателя и сервера распределенный сервер IIS не требуется.

Следовательно, BITS – оптимальный протокол для передачи больших файлов по медленным и нестабильным сетям (спутниковый канал, соединение GPRS и т.д.).

Синтаксис

Параметры

Параметр Описание
<Source> Обязательный. Указывает расположение и имена файлов, которые требуется скопировать. Этот параметр должен содержать диск или путь.
Указывает назначение файлов, которые требуется скопировать. Этот параметр может включать букву диска и двоеточие, имя каталога, имя файла или их сочетание.
/W Отображает следующее сообщение и ожидает ответа перед началом копирования файлов:Нажмите любую клавишу, чтобы начать копирование файлов.
/p Запрашивает подтверждение создания каждого целевого файла.
/C Игнорирует ошибки.
/v Проверяет каждый файл по мере записи в целевой файл, чтобы убедиться, что целевые файлы идентичны исходным файлам.
/q Подавляет отображение сообщений.
/f Отображает имена исходных и целевых файлов при копировании.
/l Создает список файлов, которые необходимо скопировать, но не копирует их активно.
Создает расшифрованные файлы назначения , если назначение не поддерживает шифрование.
/d Копирует исходные файлы, измененные только в указанную дату или после нее. Если значение MM-ДД-ГГГГ не указано, копирует все исходные файлы, которые новее существующих целевых файлов. Этот параметр командной строки позволяет обновлять измененные файлы.
/U Копирует файлы из источника , которые существуют только в целевом расположении .
/i Если источник является каталогом или содержит подстановочные знаки, а назначение не существует, предполагается, что назначение указывает имя каталога и создает новый каталог. Затем копирует все указанные файлы в новый каталог. По умолчанию предлагает указать, является ли назначение файлом или каталогом.
/s Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s опущен, работает в одном каталоге.
/e Копирует все подкаталоги, даже если они пусты. Используйте /e с параметрами командной строки /s и /t .
/t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Чтобы скопировать пустые каталоги, необходимо включить параметр командной строки /e .
/K Копирует файлы и сохраняет атрибут только для чтения в целевых файлах, если они присутствуют в исходных файлах. По умолчанию удаляет атрибут только для чтения.
/r Копирует файлы только для чтения.
/h Копирует файлы со скрытыми атрибутами и атрибутами системных файлов. По умолчанию не копирует скрытые или системные файлы
/a Копирует только исходные файлы, для которых заданы атрибуты архивного файла. Параметр /a не изменяет атрибут файла архива исходного файла. Сведения о том, как задать атрибут файла архива с помощью атрибута attrib, см. в разделе .
/m Копирует исходные файлы, для которых заданы атрибуты архивного файла. В отличие от /a, параметр /m отключает атрибуты архивных файлов в файлах, указанных в источнике. Сведения о том, как задать атрибут файла архива с помощью атрибута attrib, см. в разделе .
/n Создает копии, используя короткие имена файлов или каталогов NTFS. Параметр /n требуется при копировании файлов или каталогов из тома NTFS в том FAT или если в конечной файловой системе требуется соглашение об именовании файловой системы FAT (т. е. 8,3 символа). Файловая система destinatio* может быть FAT или NTFS.
/o Копирует сведения о владельце файла и списке управления доступом на уровне пользователей (DACL).
/x Копирует сведения о параметрах аудита файла и списке управления доступом системы (SACL) (подразумевает /o).
/exclude:FileName1]( )] Указывает список файлов. Необходимо указать хотя бы один файл. Каждый файл будет содержать строки поиска, каждая строка которых находится в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути копируемого файла, этот файл будет исключен из копирования. Например, если указать строку obj , будут исключены все файлы под каталогом obj или все файлы с расширением OBJ .
/Y Подавляет запрос на подтверждение перезаписи существующего целевого файла.
/-Y Запрашивает подтверждение перезаписи существующего целевого файла.
/z Копирует по сети в режиме перезапуска.
/b Копирует символьную ссылку вместо файлов. Этот параметр появился в Windows Vista.
/J Копирует файлы без буферизации. Рекомендуется для очень больших файлов. Этот параметр был добавлен в Windows Server 2008 R2.
/Сжать Запросите сжатие сети во время передачи файла, если это применимо.
/? Отображение справки в командной строке.

Используем BITS для асинхронного копирования больших файлов по сети

Процесс загрузки файла через BITS также можно запустить в асинхронном режиме, добавив параметр –asynchronous к предыдущей команде. В этом режиме, если что-то произойдет во время процесса загрузки файла (перезагрузка сервера, перезагрузка клиента, прерывание канала связи и т.д.), Активность будет продолжена автоматически после восстановления источника и загрузка файла продолжится с того момента, когда было установлено соединение потерянный.

По умолчанию Start-BitsTransfer работает с приоритетом переднего плана (максимально возможным). Предполагается, что загрузка файла, инициированная в этом режиме, будет конкурировать с другими процессами за пропускную способность. Чтобы этого избежать, вам нужно явно указать любой другой приоритет в качестве аргумента команды, например -Низкий приоритет:

Асинхронный процесс BITS выполняется в фоновом режиме и не отображает ход выполнения команды загрузки файла. Статус процесса BITS можно получить из консоли PowerShell с помощью команды Get-BitsTransfer:

Команда возвращает статус передачи (в этом случае видно, что передача завершена – Transferred), информацию о количестве переданных байтов, общем размере файла, времени создания и завершения процесса BITS.

вы можете просмотреть статус всех процессов BITS, запущенных на вашем компьютере, в табличной форме:

При использовании асинхронного режима передачи временный файл с расширением .tmp создается в целевом каталоге (по умолчанию скрыт в проводнике). Чтобы преобразовать его в исходный тип файла (который хранится на исходном сервере), вам необходимо выполнить команду Complete-BitsTransfer:

После этого процесс загрузки BITS считается завершенным и исчезает из списка процессов.

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

Чтобы временно приостановить процесс BITS, запустите:

Чтобы продолжить работу, используйте командлет Resume-BitsTransfer:

вы можете добавить дополнительные файлы в процесс BITS с помощью командлета Add-BitsFile:

Чтобы удалить все процессы загрузки BITS на вашем компьютере (в том числе инициированные другими пользователями), выполните команду:

Задания BITS, инициированные системой, не могут быть отменены (ошибка 0x80070005 Процесс не может быть отменен). Чтобы отменить это действие, вам нужно запустить команду Remove-BitsTransfer из SYSTEM.

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

Чтобы упростить отслеживание хода выполнения задания BITS, вы можете использовать простой скрипт, который отслеживает задание и каждые несколько секунд отображает процент загрузки на экране. После завершения загрузки файла скрипт автоматически преобразует файл TMP в исходный формат:

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

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

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

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

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

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

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

14 Answers 14

Instead of hardcoding password in a shell script, use SSH keys, its easier and secure.

assuming your private key is at ~/.ssh/id_rsa and the files you want to send can be filtered with *.derp

To generate a public / private key pair :

The above will generate 2 files, ~/.ssh/id_rsa (private key) and ~/.ssh/id_rsa.pub (public key)

To setup the SSH keys for usage (one time task) : Copy the contents of ~/.ssh/id_rsa.pub and paste in a new line of ~devops/.ssh/authorized_keys in myserver.org server. If ~devops/.ssh/authorized_keys doesn’t exist, feel free to create it.

A lucid how-to guide is available here.

Even after following these instructions, I am still prompted for a password. are there other criterion that I am missing?

@ScottScooterWeidenkopf there could be a few things that could be wrong, like the .ssh dir or the authorized_keys files may not have right permissions (700).

@PradeepPati I figured out my problem. You’re right, the problem was the permissions. In the link you provided, the author mentioned some permission changes. I made those changes, and now everything works.

Just to help avoid confusion with copy-paste usage of this solution, currently this answer seems to transfer FROM remote TO local — which is opposite to what the OP is looking to do.

Note for windows users: The expect packaged in MSYS2 will match against the whole output, so the 1st rule will always be matched. If you exchange the order of both rules, you get the desired behaviour.

password="your password" username="username" Ip="" sshpass -p "$password" scp //final.txt $username@$Ip:/root/

you could also use rsync. It seems to work better for multiple files than scp IMHO.

rsync -avzh /path/to/dir/ user@remote:/path/to/remote/dir/

You can use rsync via ssh by adding the ‘-e’ switch:

rsync -avzh -e ssh /path/do/dir/ user@remote:/path/to/remote/dir/

This will still invoke an interactive password prompt. I believe the OP wanted a fully automated solution

@Dimitri scp -r copies files recursively. It has nothing to do with storing a password within the script and passing it to the scp call via a bash script! I don’t really understand your comment.

Can expect be used for rsync? I am trying to do something and my RSA key method is not working. It keeps asking me the password for the remote machine.

rsync is a program that behaves in much the same way that rcp does, but has many more options and uses the rsync remote-update protocol to greatly speed up file transfers when the destination file is being updated.

The rsync remote-update protocol allows rsync to transfer just the differences between two sets of files across the network connection, using an efficient checksum-search algorithm described in the technical report that accompanies this package.

Create task in Windows Task Scheduler

Finally, we’ll schedule the batch script using Windows task scheduler. Probably, you want to schedule a backup at 3 AM everyday or every Monday.

Step 1: Launch Task scheduler program

Step 2: From the menu click Action > Create Task

Step 3: Set Name of the task, Triggers, Action and Conditions as shown below:

Step 4: Verify if the task has been created properly. To do that, you need to click on “Task Scheduler Library” node from the left side panel and view the list of task on the middle panel.

Step 5: To test the script, just right click on the task and select “Run“.

If you want to take a backup of the task, then right click on the task and select Export.

Настройка текущего расположения (Set-Location)

Команда Get-Location используется с командой Set-Location. Команда Set-Location позволяет вам указать расположение текущего каталога.

Set-Location -Path C:\Windows

Обратите внимание, что после ввода команды вы не получите прямого отклика о действии команды. Большинство команд Windows PowerShell, выполняющих действия, практически не создают выходных данных, так как выходные данные не всегда полезны. Чтобы проверить успешность внесения изменения в каталог при вводе команды Set-Location, укажите параметр -PassThru при вводе команды Set-Location

PS> Set-Location -Path C:\Windows -PassThru

Path
----
C:\WINDOWS

Параметр -PassThru можно использовать с некоторыми командами Set в Windows PowerShell для возврата сведений о результате, когда отсутствуют выходные данные по умолчанию.

Вы можете указать пути относительно текущего расположения так же, как и в большинстве командных оболочек UNIX и Windows. В стандартной нотации для относительных путей точка ( . ) представляет текущую папку, а две точки ( .. ) — родительский каталог текущего расположения.

Например, если вы находитесь в папке C:\Windows, точка ( . ) представляет C:\Windows, а две точки ( .. ) представляют C: . Текущее расположение можно изменить на корень диска C: путем ввода следующей команды:

PS> Set-Location -Path .. -PassThru

Path
----
C:\

Тот же метод работает для дисков Windows PowerShell, которые не являются дисками файловой системы, например HKLM: . В реестре в качестве расположения можно задать раздел HKLM\Software путем ввода следующего кода:

PS> Set-Location -Path HKLM:\SOFTWARE -PassThru

Path
----
HKLM:\SOFTWARE

После этого можно изменить расположение каталога на родительский каталог, который является корнем диска Windows PowerShell HKLM: с помощью относительного пути:

PS> Set-Location -Path .. -PassThru

Path
----
HKLM:\

Вы можете ввести Set-Location или использовать любой из встроенных псевдонимов Windows PowerShell для Set-Location (cd, chdir, sl). Пример:

cd -Path C:\Windows
chdir -Path .. -PassThru
sl -Path HKLM:\SOFTWARE -PassThru

Advantages of using the PassThru Parameter

Many cmdlets in PowerShell have a PassThru parameter. Cmdlets that typically return nothing can return the objects they are manipulating using the PassThru parameter. This cmdlet is no different. When I first started scripting, I never used this parameter because I didn’t feel I needed to.

For example, if I wanted to copy a file to a remote location and then reference that file later on in my script I’d do something like this:

This method works but it can be better. Instead of defining a variable for the remote path, why not just capture the object that gets returned from cmdlet when using the parameter instead? The objects returned will always have the destination file path.

Примеры использования XCOPY

XCOPY /? – выдать краткую справку по использованию команды.

xcopy C:users D:copy1 – скопировать файлы из каталога C:users в каталог D:copy1 . Будет выполняться копирование без подкаталогов и только файлов без атрибутов «Скрытый» и «Системный». Для скопированных файлов будет установлен атрибут Архивный . Если каталог, в который выполняется копирование, не существует, то пользователю будет выдано сообщение:

Что означает D:copy1:
имя файла или каталога
(F = файл, D = каталог)? D

После ответа D целевой каталог будет создан и копирование будет выполняться в D:COPY1. Для подавления запроса на создание целевого каталога используется параметр /I:

xcopy C:users D:copy1 /I

xcopy C:users D:copy1 /H /Y /C – копирование файлов, включая скрытые и системные, с подавлением запроса на перезапись существующих и возобновлением при ошибке. Если существующий в целевом каталоге файл имеет атрибут «Только чтение», то копирование не выполняется. Для перезаписи таких файлов используется ключ /R

xcopy C:users D:copy1 /H /Y /C /R /S – скопировать все файлы и подкаталоги ( /S ) с перезаписью существующих без запроса ( /Y ) , включая скрытые и системные. ( /H ) с перезаписью файлов с атрибутом «Только чтение» (/R) и игнорированием ошибок ( /C )

xcopy C:users D:copy1 /H /Y /C /R /S /EXCLUDE:C:userslistnotcopy.txt – то же, что и в предыдущем случае, но текстовый файл C:userslistnotcopy.txt задает признаки исключения из процедуры копирования. Пример содержимого файла:

User1 – исключить из копирования каталог C:usersuser1
All Users исключить из копирования каталог C:usersAll Users
de*.* – исключить из копирования все файлы и каталоги, начинающиеся на буквосочетание «de»

xcopy C:users*.exe D:copy1 /H /Y /C /R /S /EXCLUDE:C:userslistnotcopy.txt – то же, что и в предыдущем примере, но выполняется только копирование исполняемых файлов с расширением .exe .

xcopy %TEMP%*.ini D:copy1ini /H /Y /C /R /S /I – копирование всех файлов с расширением .ini из каталога временных файлов в каталог D:copy1ini . Если целевой подкаталог ini не существует, то он будет создан без запроса пользователю ( /I ) .

xcopy %TEMP%*.ini D:copy1ini /H /Y /C /R /S /I /D:09-16-2013 – то же, что и в предыдущем примере, но выполняется копирование только тех файлов, у которых установлена дата изменения 16 сентября 2013 года и старше.

xcopy C: D:copy1LISTDIR /H /Y /C /R /S /I /E /T – создать структуру папок диска C: в каталоге D:copy1LISTDIR . Копирование файлов не выполняется. Копируются только папки, включая пустые, скрытые и системные.

xcopy C: D:copy1LISTDIR /H /Y /C /R /S /I /E /T /D:09-16-2013 воссоздать в каталоге D:copy1LISTDIR структуру папок диска C: , с датой изменения 16 сентября 2013 года и позже.

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

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

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 файла и два расписания резервного копирования в разные папки.

Пример скрипта

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

Создаем каталог для скриптов и сам скрипт:

mkdir /scripts

vi /scripts/samba_backup.sh

  1. #!/bin/bash
  2. PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  3. source=»/data»
  4. destination_root=»/backup»
  5. fdate=$(date +%Y-%m-%d)
  6. # Clean old archives
  7. find ${destination_root}/archive -type f -name «*.tar.gz» -ctime +370 -exec rm -R {} \; 2>&1
  8. # Daily
  9. rsync -a —partial —inplace —append —delete-after ${source}/ ${destination_root}/daily/
  10. # Weekly
  11. if ]
  12. then
  13.   rsync -a —partial —inplace —append —delete-after ${source}/ ${destination_root}/weekly/
  14. fi
  15. # Archive
  16. count_last_archives=$(find ${destination_root}/archive/ -name «*.tar.gz» -mtime -30 | wc -l)
  17. if ]
  18. then
  19.   cd ${source}
  20.   tar zcf ${destination_root}/archive/samba_${fdate}.tar.gz ./*
  21. fi

Задаем права скрипту на выполнение:

chmod +x /scripts/samba_backup.sh

Скрипт готов к работе.

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

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