echo cdf >> ~~.txt 에서 >> 는 기존 것 건드리지 않고 한 줄 추가
tar.gz / tar 로 묵고 gzip 압축
# 사전 환경세팅
mkdir ~/backup
touch ~/backup/abc
touch ~/backup/cdf
echo abc > ~/backup/files_to_backup.txt
echo cdf >> ~/backup/files_to_backup.txt
ll ~/backup
cat ~/backup/files_to_backup.txt
cd ~/backup
###### 아래가 쉘 스크립트입니다 #######
#!/bin/bash
# 오늘의 날짜 확인
today=$(date +%y%m%d)
#
# 백업 파일 이름 설정
backupfile=backup_$today.tar.gz
#
# 설정 파일 위치 및 저장될곳 설정
config_file=~/backup/files_to_backup.txt
backup_directory=~/backup/$backupfile
#
# 스크립트 메인
#######################################
#
# 백업 관련한 컨피그 파일이 있는지 확인
#
if [ -f $config_file ] # 컨피그 파일이 있는지 -f 는 find 파일 찾기
then # 존재한다면 그냥 패스
echo
else # 존재 하지 않다면, 에러 발생시키고 스크립트 종료
echo
echo "$config_file isn't exist."
echo "backup is not started"
echo
exit
fi
#
# 백업해야 할 파일 리스트업
#
file_no=1 # 파일 번호는 1번부터 시작
exec 0< $config_file # 컨피그 파일로 Standard Input으로 redirect
#
read file_name # Input(컨피그 파일)의 첫줄 file_name으로 읽기
#
while [ $? -eq 0 ] # 백업할 파일 리스트업
do
if [ -f $file_name -o -d $file_name ] # 파일이나 디렉토리가 있는지 확인
then
# 만약 파일이 있다면, 이름을 리스트에 추가
file_list="$file_list $file_name"
else
# 만약 파일이 없다면, 경고 메세지 출력하고 진행
echo
echo "$file_name, isn't exist."
echo "Continuing to build backup list"
echo
fi # 조건문 닫기 필수
#
file_no=$[$file_no + 1] # number 하나씩 증가
read file_name # 다음 한줄 읽기
done
#
#######################################
#
# 백업 파일 압축
#
echo "Starting backup"
echo
#
tar -czf $backup_directory $file_list
#
echo "Backup completed"
echo "Resulting backup file is: $backup_directory"
echo
#
exit
'리눅스' 카테고리의 다른 글
| /etc/passwd/ (0) | 2024.09.09 |
|---|---|
| 사용자 관리 스크립트 / IFS (0) | 2024.09.09 |
| 로그 파일 분석 스크립트 / awk, uniq, sort (0) | 2024.09.06 |
| 배포 스크립트 / jq, tr, for , scp (3) | 2024.09.06 |
| 서버 상태 체크 스크립트 / SAR, uname (2) | 2024.09.06 |