스크립트

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

 

이 스크립트는 다음을 수행합니다

  1. 현재 날짜를 구하고 년, 월, 일을 추출합니다.
  2. 동기화할 디렉토리 목록을 지정합니다.
  3. rsync 명령어를 사용하여 지정된 디렉토리를 다른 서버로 동기화합니다.
  4. .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
반응형