본문 바로가기
Research/Linux

crontab ftp 업로드 자동

by sunnyan 2008. 10. 21.
728x90
ftp 업로드 자동

 글쓴이 : 자인
조회 : 59   추천 : 1  

ftp 업로드 자동

보통 crontab 에 스케줄을정리하여 자동으로 백업을 받던지 어떠한 작업등을 설정할 수 있는데..
이중 어떤 자료를 매월 혹은 매주 특정 서버로 보내야 할 필요가 있다면 어떻게 해야 할까?
ftp 명령을 사용하여 자동으로 다른 서버로 자료를 보내는방법을설명드리고자 합니다.

1. ftp 자동로그인 환경파일 작성
    # vi .netrc
    # mahine [hostname]  login [loginid]   password [login password] 
    machine   ftpserver  login  ftpuser  password  pw1234
    
    위와 같이 파일을 .netrc 파일을 작성합니다. machine 뒤에 오는 ftpserver 값은
    /etc/hosts 파일에 아이피주소가 미리 등록되어 있어야 합니다.
    
    # chmod 600 .netrc
    
    .netrc 파일을 600 모드로 바꾸지 않으면 파일 모드가 맞지 않다고 에러가 납니다.
 
2. ftp 실행 테스트
    # ftp ftpserver
   
    Connected to ftpserver.
    220 NMS FTP server (SunOS 5.8) ready.
    331 Password required for root.
    230 User root logged in.
   
    ftp>
   
    아이디와 암호를 묻는 과정없이 자동으로 로그인 됩니다.
 
 
3. 로그인뒤 실행되어야 될 명령어 설정
    # vi .ftpcmd
    bin # binary file일 경우
    cd /export/home  # 서버에 업로드 디렉토리 이동 할 경우
    prompt  # 다수의 파일을 업로드 해야될경우 interactive 모드 해제
    mput   *.tar # 특정파일 업로드
 
4. 실행 테스트
    # ftp ftpserver < .ftpcmd
    자동으로 실행되는지 확인합니다.
 
5. 크론탭등록할 스크립트 만들기
    # vi ftpupload.script
    cd /ftpuploaddir  # 업로드할 파일이 있는 디렉토리 가기
    ftp ftpserver < /.ftpcmd
    
    # chmod 700 ftpupload.script
 
 
6. 크론탭 등록하기
    crontab -e
    0 6 1,16 * *    /ftpupload.script   # 크론탭 맨끝에 추가
   

    # 매월 1일 16일 6시에 ftp 업로드 실행


====================================================================

출처 : http://whitebear.tistory.com/43

우선 ftp 명령을 수행할 파일을 백업 디렉토리에 만들어요..
# vi backup.txt
open 210.112.223.11 --> ftp연결할 서버
user root 1234 --> user와 패스워드
prompt off
hash
bi
cd /data --> 백업파일을 저장할 디렉토리
mput * --> 현재의 방 밑에 있는 모든파일을 ftp서버로 보냄
guit

자 그리고 파일 하나을 더 만들어야 되요..
cron을 실행 시킬 파일이죠...
# ftpbackup
ftp -n -v < backup.txt

이제는 crontab에 올려주면 그만...

cron 사용법은 아래에,.,..
Cron을 이용하기위해서는 cron을 이용할 수 있는 User를 정의 해야 합니다.
/usr/lib/cron/cron.allow file에 username 을 넣으십시요.

그후에 수행시키려는 시간과 명령을 정의한 file을 만듭니다.
File의 형식은 아래와 같습니다.

* * * * * command
| | | | |
| | | | +--> 요일 (0-6, 0은 일요일입니다)
| | | +--> 월 (1-12)
| | +--> 일 (1-31)
| +--> 시간 (0-23)
+--> 분 (0-59)

<< 예제 >>.
$ vi job.crontab

0,30 * * * * /bin/date
--> 매시 30 분 간격으로 /bin/date 를 실행함.
0 12 * * 1 /bin/tar cvf /dev/rmt/0m /users
--> 월요일 마다 12 시에 users directory를 tar command로 backup 함.

$ crontab job.crontab
--> submit file to cron
$ crontab -l
--> check current cron jobs
$ crontab -r
--> remove user's cronjobs


728x90