Java - Commons Net의 FTPClient 사용하여 FTP 접속및 파일 컨트롤 완성 소스
Posted 09 1, 2009 10:17, Filed under: Language/OpenSource# 작업 내용
- 서버상에 생성한 일일 백업및 시스템로그 파일을, JAVA 프로세스를 이용하여 사용자의 로컬 PC에 다운로드 합니다.
# 필요 작업
1) 서버에 일일 백업및 시스템 로그 파일을 생성하는 스크립트를 작성하여 crontab 로 일정시간에 실행되도록 등록 합니다.
2) 서버상의 존재하는 백업 파일및 시스템 로그를 FTP로 접속하여 지정된 로컬 PC에 다운로드 합니다.
# 서버에서 FTP 프로세스가 실행되고 있어야 합니다.
# 작업 내용
1) 일일 백업 스크립트 - 적용 OS : Linux
- 파일명 : daily_backup.sh
TODAY=`date +%Y%m%d`
OLDDATE=`date --date '5 days ago' +%Y%m%d`
echo "$TODAY daily report" >> /home/backup/logs/$TODAY.log
echo "$OLDDATE old date" >> /home/backup/logs/$TODAY.log
DELETE_OLD_FILE="/home/backup/$OLDDATE.tar"
DELETE_OLD_LOG="/home/backup/logs/$OLDDATE.log"
echo "Date Backup Start~!" >> /home/backup/logs/$TODAY.log
tar -cvf - /home/free/webapps/WebContent/WEB-INF/ > /home/data_backup/$TODAY.tar
echo "Date Backup End~!" >> /home/backup/logs/$TODAY.log
echo "" >> /home/data_backup/logs/$TODAY.log
echo "Old Data Delete Start~!" >> /home/backup/logs/$TODAY.log
rm $DELETE_OLD_FILE
rm $DELETE_OLD_LOG
echo "Old Data Delete End~!" >> /home/backup/logs/$TODAY.log
- 파일명 : daily_system_log.sh
[backup@localhost ~]$ cat daily_system_log.sh
#!/bin/sh
TODAY=`date '+%Y-%m-%d'`
OLDDATE=`date --date '30 days ago' +%Y-%m-%d`
# 현재 날자의 이름을 가진 txt 파일을 생성합니다.
echo "$TODAY daily report" >> /home/backup/report/report_$TODAY.txt
echo "$OLDDATE old date" >> /home/backup/report/report_$TODAY.txt
# 현재 날자로부터 30일 전의 파일을 삭제합니다.
DELETE_OLD_TXT="/home/backup/report/report_$OLDDATE.txt"
rm $DELETE_OLD_TXT
# NETWORK STATUS
# 생성된 파일에 용량확인 로그를 저장합니다.
echo " " >> /home/backup/report/report_$TODAY.txt
df -h >> /home/backup/report/report_$TODAY.txt
echo " " >> /home/backup/report/report_$TODAY.txt
- 파일명 : /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
# 매일 새벽 1시에 backup 계정으로 daily_backup.sh를 실행
01 1 * * * backup /home/backup/daily_backup.sh
# 매일 새벽 1시에 backup 계정으로 daily_system_log.sh를 실행
01 1 * * * backup /home/backup/daily_system_log.sh
2) FTPClient 를 이용하여 파일 다운로드
- Commons Net 라이브러리를 다운로드
경로 : http://jakarta.apache.org/site/downloads/downloads_oro.cgi
Commons Net 라이브러리 사용법 펌글 :
http://develop.sunshiny.co.kr/266?category=8
- 설정파일 정의 : Config.properties
# FTP 서버및 로컬 환경 설정
# 2009.08.06 최초작성 - sunshiny
############################################################################
# 서버 URL, IP
server.ip = 192.168.1.123
# FTP 서버 접속 계정 정보
server.user = backup
server.passwd = 1234
# 서버상의 파일이 있는 위치
server.path = /
# 다운 파일 저장위치
local.path = D:/02.TEMP/
# 로그 파일 저장 위치
log.path = D:/02.TEMP/log/
# 원격 서버에서 백업할 파일명은 기본 "yyyyMMdd" 형식을 지켜야 하며,
# 확장자는 변경하여 사용 가능.
# 다운로드시 파일명 변경. 저장 예) day_20090806.tar
download.file.name = day_
# 다운로드할 파일 확장자 설정(원격 서버와 동일)
download.file.type = tar
# 다운로드한 파일삭제 주기 (입력형식 1~100 숫자)
# 공백일경우 삭제 없음.
download.file.delete = 6
############ 서버 용량확인 텍스트 파일 설정 ###############
# 서버상의 로그 파일이 있는 위치
system.log.path = report/
# 저장(다운로드) 위치
local.log.path = D:/02.TEMP/daily_log/
# 삭제 주기 (입력형식 1~100 숫자)
# 공백일경우 삭제 없음.
local.log.delete = 30
# 로컬 PC 에 다운로드 예약을 실행시에
cmd 파일또는 bat 파일을 생성하여 아래와 같이 commons-net, Main 클래스 파일 위치를 설정 해줍니다.
그 후에 윈도우에 있는 예약설정을 이용하여 해당 cmd 또는 bat 파일을 선택 해줍니다.
- 파일명 : start_backup.cmd
# 이후 JAVA 파일은 소스를 참고.
- 전체 소스 다운로드 -
CommonNet.zip (125)"Language / OpenSource" 분류의 다른 글
| Java - MetaData를 활용하여 Database의 테이블별 데이타를 파일로 저장 (0) | 2009/11/05 |
Trackback URL : http://develop.sunshiny.co.kr/trackback/293