728x90
반응형
리눅스에서 원본폴더와 백업폴더 안에 모든 파일을 비교하여, 각 항목마다 결과파일을 각각 생성하는 스크립트다.
1. 파일 개수 비교
2. 각 파일별 용량 비교 및 내용 비교 결과
3. 원본과 백업의 폴더 및 파일이 추가/삭제된 목록
#!/bin/bash
# 결과 파일 이름 설정
file_count_result="file_count_result.txt"
comparison_result="comparison_result.txt"
changes_result="changes_result.txt"
# 원본 폴더와 백업 폴더 경로 설정
src_dir="/home/orangepi/Downloads/comp1"
backup_dir="/home/orangepi/Downloads/comp2"
# 1. 파일 개수 비교하고, 어떤 하위 폴더의 파일의 개수가 다른지 목록 및 개수 표시
# 원본 폴더와 백업 폴더의 하위 폴더별 파일 개수를 비교하고 결과를 저장합니다.
diff_file_counts=$(diff -qr "$src_dir" "$backup_dir" | grep -E "^Only in $src_dir|^Only in $backup_dir")
# 원본 폴더와 백업 폴더의 파일 개수를 비교하고 결과를 저장합니다.
src_file_count=$(find "$src_dir" -type f | wc -l)
backup_file_count=$(find "$backup_dir" -type f | wc -l)
# 결과 파일에 파일 개수 비교 결과 저장
echo "원본 폴더 파일 개수: $src_file_count" > "$file_count_result"
echo "백업 폴더 파일 개수: $backup_file_count" >> "$file_count_result"
# 결과 파일에 파일 개수 비교 결과 저장
echo "하위 폴더의 파일 개수 비교 결과:" >> "$file_count_result"
echo "$diff_file_counts" >> "$file_count_result"
# 2. 각 파일별 용량 및 날짜 비교 후 다른 목록 추출
# 원본 폴더와 백업 폴더의 파일을 비교하고 크기와 수정일자가 다른 파일을 저장합니다.
find "$src_dir" -type f | while read -r src_file; do
relative_path="${src_file#$src_dir}"
backup_file="$backup_dir$relative_path"
# 파일이 존재하지 않는 경우 무시
if [ ! -e "$backup_file" ]; then
continue
fi
# 파일 크기 및 수정일자 비교
src_size=$(stat -c%s "$src_file")
backup_size=$(stat -c%s "$backup_file")
src_mtime=$(stat -c%Y "$src_file")
backup_mtime=$(stat -c%Y "$backup_file")
# 크기 또는 수정일자가 다른 경우 결과 파일에 저장
if [ $src_size -ne $backup_size ] || [ $src_mtime -ne $backup_mtime ]; then
echo "파일 $relative_path: 크기 또는 수정일자 다름" > "$comparison_result"
fi
done
# 3. 원본과 백업의 폴더 및 파일 추가/삭제 목록
# 원본 폴더와 백업 폴더를 비교하여 추가/삭제된 폴더 및 파일을 저장합니다.
src_changes=$(diff -rq "$src_dir" "$backup_dir")
# 결과 파일에 저장
echo "$src_changes" > "$changes_result"
# 결과 파일 출력
echo "1. 파일 개수 비교 결과:"
cat "$file_count_result"
echo
echo "2. 각 파일별 용량 및 날짜 비교 결과:"
cat "$comparison_result"
echo
echo "3. 원본과 백업의 폴더 및 파일 추가/삭제 목록:"
cat "$changes_result"
728x90
반응형
LIST
'Linux' 카테고리의 다른 글
[Linux] lsof 명령어와 다양한 예제 (1) | 2023.09.28 |
---|---|
[Linux] 중복 파일을 확인하는 스크립트 (1) | 2023.09.22 |
[Linux] diff 명령어의 다양한 옵션과 예시 (1) | 2023.09.20 |
[Linux] curl 로 Restful API 호출 및 JSON 데이터 전송 (1) | 2023.09.19 |
[Linux] Shell in a box 설치하여, Web 브라우저에서 사용하기 (1) | 2023.08.29 |