웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
해당 ftp 파일 서버에서 다른곳의 ftp 파일 서버로 백업용도 및 전송하기..
2004.05.30 01:52
안녕하세요
제목이 참 희한하기도 하고, 호기심에 클릭하신분이 많으시라 짐작이 가는군요^^
제가 쓰는것은 php 의 몇몇가지 함수를 이용?으로 A의 ftp 서버내의 파일 따위를 다른 B의 ftp 서버로 로컬을 거치지 않고, A에서 B로 바로 전송하는 것을 보여드리고자 합니다.
이에 대한 응용작을 먼저 말씀드리자면, 다른서버로 전송하게 됨으로써 , 일단 조금더 안전하게 2중으로 백업이 가능하다는점입니다.
소스시작입니다.
<?
$directory ="/home/kowa/public_html/"; // 보내시려는 A 측에 있는 파일이 있는 경로입니다.
$filename = "kowa" . date("ymd") . ".tar.z"; // 파일명으로 적어두셔도 좋지만, 저는 kowa040530.tar.z 씩의 전송이 필요하기에 이렇게 해두었습니다. 참고해주세요
$filename2 = "kowa_mysqldb" . date("ymd") . ".sql"; // 위와 같습니다. db 이동에 필요한것입니다.(이것으로 한번에 2개의 파일전송이 가능합니다. 갯수를 늘려주신다면, 원하시는만큼 가능합니다.
$server_host = "xxx.xxx.xxx.xxx"; //접속해서 A의 파일을 B로 보내고자 하는 B 서버의 ip주소
$server_port = "21"; // 전송받는 B 서버의 ftp port (보통 21입니다.)
$server_id= "ID"; // 전송받을 B 서버의 접속아이디
$server_pw = "PW"; // 전송받을 B 서버의 password
// 원격서버에 연결한다.
if(!($fc = ftp_connect($server_host, $server_port)))
die("$server_host : $server_post - connect failed");
//원격서버에 로그인한다.
if(!ftp_login($fc, $server_id, $server_pw))
die("$server_id - login failed");
//업로드할 폴더로 이동한다.
$server_dir = "www.svkowa.net/"; // 저는 B 측서버의 계정이 svkowa.net 으로 연결되어있어서 이렇게 해두었습니다. 절대경로로 적어주셔야 할 것 같습니다.
ftp_chdir($fc, $server_dir);
//파일을 업로드 한다.
if(!ftp_put($fc, $filename, $directory.$filename, FTP_BINARY))
{
echo" <script name=javascript> window.alert ('제3자의 서버로 전송 하는 데 실패했습니다.'); // 메시지는 마음대로^^
history.go(1) // -1을 하시거나, 1을 하시거나, 없애시거나, 자유이십니다.
</script>";
}
if(!ftp_put($fc, $filename2, $directory.$filename2, FTP_BINARY))
{
echo" <script name=javascript> window.alert ('제3자의 서버로 전송 하는 데 실패했습니다.');
history.go(1)
</script>";
}
//FTP를 닫는다
ftp_quit($fc);
?>
소스 끝
php 의 중간정도의 실력이 있으신분은, 별것도 아니라고 생각하지만,
저에게는 너무나 필요했던 소스였답니다.
사용방법이라면 매우 간단합니다. 위의 php 를 각자 사용하시는 정보에 맞게 수정후 나름대로 임의의 (ex pass.php) 이런씩으로 파일이 있는 A곳에 저장하시면 되겠습니다. 그리고 웹페이지에서 (ex pass.php)를 읽어주시면,(제가 출력구문따위를 넣은게 없으므로^^) 공백이면서 상태표시줄의 파란막대기만이 천천히 움직일것입니다.;;
그리고 이 소스의 원본(phpschool.com)팁 게시판에 있는것을 수정하였습니다.
글을 마치며,, php 에 대해 걸음마 수준이지만,, 조금씩 조금씩 부족한 부분을 채워나갈것입니다.^^
저의 홈페이지는 http://svkowa.net 입니다. 웹친구가 되어주세요^^ 하하.
.^^혹시 잘 안되시는점 있으시다면, 놀러오세요.
제목이 참 희한하기도 하고, 호기심에 클릭하신분이 많으시라 짐작이 가는군요^^
제가 쓰는것은 php 의 몇몇가지 함수를 이용?으로 A의 ftp 서버내의 파일 따위를 다른 B의 ftp 서버로 로컬을 거치지 않고, A에서 B로 바로 전송하는 것을 보여드리고자 합니다.
이에 대한 응용작을 먼저 말씀드리자면, 다른서버로 전송하게 됨으로써 , 일단 조금더 안전하게 2중으로 백업이 가능하다는점입니다.
소스시작입니다.
<?
$directory ="/home/kowa/public_html/"; // 보내시려는 A 측에 있는 파일이 있는 경로입니다.
$filename = "kowa" . date("ymd") . ".tar.z"; // 파일명으로 적어두셔도 좋지만, 저는 kowa040530.tar.z 씩의 전송이 필요하기에 이렇게 해두었습니다. 참고해주세요
$filename2 = "kowa_mysqldb" . date("ymd") . ".sql"; // 위와 같습니다. db 이동에 필요한것입니다.(이것으로 한번에 2개의 파일전송이 가능합니다. 갯수를 늘려주신다면, 원하시는만큼 가능합니다.
$server_host = "xxx.xxx.xxx.xxx"; //접속해서 A의 파일을 B로 보내고자 하는 B 서버의 ip주소
$server_port = "21"; // 전송받는 B 서버의 ftp port (보통 21입니다.)
$server_id= "ID"; // 전송받을 B 서버의 접속아이디
$server_pw = "PW"; // 전송받을 B 서버의 password
// 원격서버에 연결한다.
if(!($fc = ftp_connect($server_host, $server_port)))
die("$server_host : $server_post - connect failed");
//원격서버에 로그인한다.
if(!ftp_login($fc, $server_id, $server_pw))
die("$server_id - login failed");
//업로드할 폴더로 이동한다.
$server_dir = "www.svkowa.net/"; // 저는 B 측서버의 계정이 svkowa.net 으로 연결되어있어서 이렇게 해두었습니다. 절대경로로 적어주셔야 할 것 같습니다.
ftp_chdir($fc, $server_dir);
//파일을 업로드 한다.
if(!ftp_put($fc, $filename, $directory.$filename, FTP_BINARY))
{
echo" <script name=javascript> window.alert ('제3자의 서버로 전송 하는 데 실패했습니다.'); // 메시지는 마음대로^^
history.go(1) // -1을 하시거나, 1을 하시거나, 없애시거나, 자유이십니다.
</script>";
}
if(!ftp_put($fc, $filename2, $directory.$filename2, FTP_BINARY))
{
echo" <script name=javascript> window.alert ('제3자의 서버로 전송 하는 데 실패했습니다.');
history.go(1)
</script>";
}
//FTP를 닫는다
ftp_quit($fc);
?>
소스 끝
php 의 중간정도의 실력이 있으신분은, 별것도 아니라고 생각하지만,
저에게는 너무나 필요했던 소스였답니다.
사용방법이라면 매우 간단합니다. 위의 php 를 각자 사용하시는 정보에 맞게 수정후 나름대로 임의의 (ex pass.php) 이런씩으로 파일이 있는 A곳에 저장하시면 되겠습니다. 그리고 웹페이지에서 (ex pass.php)를 읽어주시면,(제가 출력구문따위를 넣은게 없으므로^^) 공백이면서 상태표시줄의 파란막대기만이 천천히 움직일것입니다.;;
그리고 이 소스의 원본(phpschool.com)팁 게시판에 있는것을 수정하였습니다.
글을 마치며,, php 에 대해 걸음마 수준이지만,, 조금씩 조금씩 부족한 부분을 채워나갈것입니다.^^
저의 홈페이지는 http://svkowa.net 입니다. 웹친구가 되어주세요^^ 하하.
.^^혹시 잘 안되시는점 있으시다면, 놀러오세요.
댓글 9
-
2004.05.30 08:10
-
앳플군
2004.05.30 11:19
PHP 내장 FTP 관련 함수를 비추천하는것은 저도 동의합니다만, 왜 Nobody가 되는지는 이해가 안됩니다. -_-;
알 FTP로 올린다고 Nobody가 되고 Smart FTP로 올린다고 해서 user이 되는건 아니잖습니까.. -_-; -
김동욱
2004.05.30 12:22
ftp 로그인 할때 노바디로 될 확률이100% 라는점에 이해가 되지 않습니다.
제가 했을때는 그런적이 한번도 없으며, 전송결과 퍼미션은 기본 644로 잡힙니다.
테스트 환경에 대해 적지를 못했군요^^ 죄송합니다. ,리플주신분께서는 이름이 ..;
리눅스(레드헷) 7.3-> 9.0(모두 웹계정서비스를 받는)으로 전송테스트를 하였습니다.
전송을 위한 php가 있는 파일에 특별한 퍼미션을 주지 않고 진행했습니다.
아니면 777로 주십시오.
777로 안둔다고 삭제를 못하는것이 아니라는점 다 아시리라 믿습니다.
이름 없으신분께서 쉘스크립트를 올려주심도 제로보드를 찾아주시는분에게는 더욱 좋은 팁이 되지 않을까요? 기대하겠습니다.^^ -
U2em
2004.05.30 13:01
이를 악용해 크래킹할수도 있습니다. FTP Bounce Attack이라고 하죠.
파일을 수천개씩 올린다던가 스크립트(?)를 올려서 crontab이나 유저가 그것을 읽는 순간 루트쉘이 떨어진다던가 합니다. -
김동욱
2004.05.30 14:29
그렇지만, 일단 php의 파일을 숨기거나, 이름을 변경 또는, 리눅스가 시스템으로 인식하는 확장자따위로 바꾸어도 읽지 못합니다.
저의 의도는 A 서버에서 받아서 B 서버로 올리는 불편함을 없애고자 한것입니다.
필요할때만 이름 변경만으로도 충분히 보완이 된다고 생각합니다.
계정의 파일,폴더의 목록을 보지 못하는 한 악용하기는 어렵다고 생각합니다. -
써니루루☆
2004.05.30 17:33
개인용으로 써야겠군요... -
스프
2004.05.31 10:43
그냥 FlashFXP를 쓰십시오..-_-; -
9000㎒
2004.06.02 15:51
차라리 A,B 모두 FTP 서버운용을 하는편이 [..]
그래서 서로 시스템 관리자가 cron 같은 방법을 이용하여 특정 파일을 다운받게 하면 될것 아닙니까.
괜히 왜 PHP 프로그램으로 -_- [..]
권한이 nobody라는 것도 큰 문제가 있습니다. -
피너츠
2004.06.09 16:59
개인용이라고 말씀하시잖아요.
왜 자꾸 자기 생각을 주장하십니까? -_-
제목 | 글쓴이 | 날짜 |
---|---|---|
초간단 스팸방지 하면서 곧바로 메일 보내기 [3] | U2em | 2004.05.31 |
해당 ftp 파일 서버에서 다른곳의 ftp 파일 서버로 백업용도 및 전송하기.. [9] | 김동욱 | 2004.05.30 |
초간단 설문조사 소스 [3] | 이혁 | 2004.05.27 |
PHP로 구현하는 음악 감상실 [9] | 컴도미 | 2004.05.21 |
[국밥PHP] 1-1(1). 개념정리 Break Time (Build 1) [7] | 9000㎒ | 2004.05.18 |
팁 아닌 팁 한달전... | http://zentoo.com | 2004.05.15 |
포털사이트 처럼 시스템 점검중 만들기 [3] | http://zentoo.com | 2004.05.14 |
PHP 4에서 PHP 5로 이행 [5] | 이종현 | 2004.04.30 |
PHP5 RC2 Released. [4] | 써니루루☆ | 2004.04.27 |
트랙백 구현하기 - 2. 트랙백의 형식 | TheMics | 2004.04.22 |
트랙백 구현하기 - 2. 트랙백의 형식 | TheMics | 2004.04.22 |
엔지오 채널 따라하기 -_-& www자동 붙이기 [6] | 박종찬 | 2004.04.18 |
트랙백 구현하기 - 1. 트랙백이란 무엇인가? [4] | TheMics | 2004.04.18 |
[국에 밥말아먹는 PHP 프로그래밍] 1-1. PHP는 뭐하는 밥이냐?! (상) (Build 2) [17] | 9000㎒ | 2004.04.18 |
배열의 정렬에 대한 약간의 강의 [2] | ♡다솜지기♡ | 2004.04.02 |
드디어 PHP 5 RC1 발표(04.03.18) [8] | 써니루루☆ | 2004.03.19 |
PHP와 MYSQL연동 관련함수 [3] | 백무혼 | 2004.03.07 |
함수] Exec 함수에 대한 간략한 설명 [3] | NS | 2004.03.05 |
초간단 인라이브 방송여부 알아보기 프로그램. [12] | 심심타 | 2004.03.01 |
[허접팁]윈엠프 리스트창에 방송정보 보여주기;;[수정] [5] | 『처니리♂』 | 2004.02.29 |
PHP로 하면 올린는측 말고 받는측 서버에 권한이 100% Nobody로 됩니다.
물론 FTP로그인할때도 노바디로 엑세스 하는게 문제도 되지만..
윈도우 서버는 그런건 상관 없지만..;;
유닉스나 리눅스나 올릴데 소스에 권한 조정 명령어 안해놓으면(777)
삭제할때 골치좀 아플겁니다. 물론 삭제가 자연스럽게 되는서버도 있지만.-_-;;
차라리 쉘 스크립트를 쓰세요.. 노바디로 될 확률은 없습니다.. ncftp로 스크립트 짜는거 어렵지는 안을 겁니다...