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