📜 Bash скрипт для копирования всех файлов с той же структурой каталогов |

📜 Bash скрипт для копирования всех файлов с той же структурой каталогов

Скрипты
Этот скрипт оболочки предназначен для конкретной задачи, необходимой для нашего сервера.

Задача

Наша задача – скопировать все файлы, созданные в каталоге, в другой каталог с такой же структурой каталогов.

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

Скрипт должен поддерживать ту же структуру каталогов в каталоге назначения.

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

После успешного копирования файла скрипт должен удалить файлы из исходного каталога.

Shell скрипт резервного копирования Linux

Создайте скрипт оболочки в вашей системе и добавьте содержимое, показанное ниже.

Обновите исходные и целевые каталоги в нужном месте.

После сохраенения не забудьте сделать скрипт исполняемым:

chmod +x script.sh

#!/bin/bash

##################### переменные #############################

### Установите правильное местоположение источника и места назначения
SOURCE_DIR="/source/dir/"
DEST_DIR="/desination/dir/"
TMP_FILE=/tmp/copyfileslist.txt

### Установите имя пользователя и имя группы, чтобы установить права на скопированные файлы
### Установите для CHANGE_OWNERSHIP значение 1, чтобы изменить владельца, или 0, чтобы не изменять его.
CHANGE_OWNERSHIP=1
USER='root'
GROUP='root'


########### Не редактируйте, пока не потребуется #################

### Проверка, существует ли исходный каталог
### Скрипт остановится, если источника не существует

if [ -d "${SOURCE_DIR}" ]; then
echo "Source directory found"
else
echo "Source directory not found. Please check above variables are set correctly"
echo "script exited"
exit 1
fi

### Проверка, существует ли каталог назначения
### Скрипт создаст каталог назначения, если он не существует.
### Если не удалось создать каталог, скрипт будет прерван

if [ -d "${DEST_DIR}" ]; then
echo "Destination directory found, all ok"
else
echo "Destination directory not found, creating now"
mkdir -p "${DEST_DIR}"
if [ $? -eq 0 ]; then
echo "Successfully created destination directory."
else
echo "Failed to create destination directory. Script exited"
exit 1
fi
fi


### Копирование всех файлов, доступных в исходном каталоге
### После успешного копирования файла скрипт удалит их из исходного каталога.
cd "${SOURCE_DIR}"

if [ $? -eq 0 ]; then
find . -type f > ${TMP_FILE}

while read CURRENT_FILE_NAME
do
cp --parents "${CURRENT_FILE_NAME}" "${DEST_DIR}"
if [ $? -eq 0 ]; then
echo "File ${CURRENT_FILE_NAME} successfully copied."
rm -f "${CURRENT_FILE_NAME}"
else
echo "File ${CURRENT_FILE_NAME} failed to copy"
fi
done < ${TMP_FILE}
rm -f ${TMP_FILE}
fi

## Установка прав на новые файлы

if [ ${CHANGE_OWNERSHIP} -eq 1 ]; then
sudo chmod 775 -R "${DEST_DIR}"
sudo chown ${USER}:${GROUP} -R "${DEST_DIR}"
fi

################### Конец скрипта ###################################

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий