스크립트
rsync 동기화 쉘 스크립트
코드버스
2023. 4. 28. 21:01
728x90
반응형
rsync 동기화 쉘 스크립트
node-02 서버
vim sync_script.sh
#!/bin/bash
# 현재 날짜 구하기
today=$(date +%Y%m%d)
# 년, 월, 일
year=${today:0:4}
month=${today:4:2}
day=${today:6:2}
# 동기화할 디렉토리 목록
directories=(
"/app/www/data"
"/app/www/data2"
"/app/www/data3"
)
# rsync 명령어로 다른 서버로 동기화하기
for directory in "${directories[@]}"
do
mkdir -p $directory/$year/$month/$day
rsync -azp root@node-01:"$directory/$year/$month/$day/" "$directory/$year/$month/$day/"
done
# .jpg 파일과 빈 디렉토리 삭제하기
for dir in "${directories[@]}"
do
# .jpg 파일 삭제
find "$dir" -type f -name "*.jpg" -mtime +7 -delete
# 빈 디렉토리 삭제
find "$dir" -type d -empty -mtime +7 -delete
done
chmod +x sync_script.sh
bash sync_script.sh
이 스크립트는 다음을 수행합니다
- 현재 날짜를 구하고 년, 월, 일을 추출합니다.
- 동기화할 디렉토리 목록을 지정합니다.
- rsync 명령어를 사용하여 지정된 디렉토리를 다른 서버로 동기화합니다.
- .jpg 파일과 빈 디렉토리를 삭제합니다.
스크립트의 각 부분을 자세히 살펴보겠습니다.
today=$(date +%Y%m%d)
year=${today:0:4}
month=${today:4:2}
day=${today:6:2}
date 명령어를 사용하여 현재 날짜를 가져옵니다. %Y%m%d 형식을 사용하여 날짜를 연도, 월, 일로 표시합니다. 그런 다음 today 변수에 결과를 할당하고, year, month, day 변수에 각각 연도, 월, 일 부분을 할당합니다.
directories=(
"/app/www/data"
"/app/www/data2"
"/app/www/data3"
)
directories 배열에 동기화할 디렉토리 목록을 저장합니다.
for directory in "${directories[@]}"
do
mkdir -p $directory/$year/$month/$day
rsync -azp root@192.168.0.51:"$directory/$year/$month/$day/" "$directory/$year/$month/$day/"
done
for 루프를 사용하여 directories 배열에서 각 디렉토리를 반복합니다. mkdir -p 명령어를 사용하여 디렉토리가 존재하지 않는 경우 새 디렉토리를 만듭니다. 그런 다음 rsync 명령어를 사용하여 지정된 디렉토리를 다른 서버로 동기화합니다.
for dir in "${directories[@]}"
do
find "$dir" -type f -name "*.jpg" -mtime +7 -delete
find "$dir" -type d -empty -mtime +7 -delete
done
for 루프를 사용하여 directories 배열에서 각 디렉토리를 반복합니다. find 명령어를 사용하여 .jpg 확장자를 가진 파일과 빈 디렉토리를 찾고, -mtime 옵션을 사용하여 7일 이전에 수정된 파일과 디렉토리를 선택합니다. 그런 다음 -delete 옵션을 사용하여 선택된 파일과 디렉토리를 삭제합니다.
728x90
반응형