웹마스터 팁
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
개인용이라고 말씀하시잖아요.
왜 자꾸 자기 생각을 주장하십니까? -_-
제목 | 글쓴이 | 날짜 |
---|---|---|
오른쪽 상단에 로그인 정보 출력하기 (게시판 만으로) | youngminpark | 2008.05.15 |
홈페이지에 닉네임 대신 실명으로 뜨게 만들기 [5] | findwind | 2008.05.19 |
보안로그인 사용시 기본포트가 아닐 경우 [2] | bluemind69 | 2008.05.20 |
IE6 한글도메인에 ZBXE 때문에 속 썩이시는 분 [1] | 햇살과수원 | 2008.05.26 |
설문조사에서 로그인하지 않은 사용자는 투표하지 못하도록 수정하기 [3] | mooo | 2008.05.29 |
제로보드와 플래시 게시판 연동해서 사용하기 [5] | Park Ki-tae | 2008.05.30 |
회원 가입시 admin이 가입 승인이후 동작시키도록 변경!! [1] | dhseo | 2008.06.02 |
1차 메뉴에서 하위 메뉴 없을때 생기는 여백 없애는 방법 [7] | 제로시오 | 2008.07.04 |
1.04 엡데이트후 재설치등으로 로그인안될때 해결법 [5] | 좀비이 | 2008.07.08 |
방명록 스킨을 통한 글 작성시 임시저장 가능케 하기(수정) | 라르게덴 | 2008.07.08 |
최고관리자 이외에는 ''회원정보보기''를 막기 [13] | 비나무 | 2008.07.10 |
최근게시물에 권한주어서 회원만 내용물보게하기 [1] | 팔공산 | 2008.07.11 |
업그레이드 쉽고,안전하게 하기(예제 포함해서 다시 올림) [2] | wannabewize | 2008.07.13 |
게시판(블로그)상단에 글쓰기버턴이나 링크넣기 [8] | 팔공산 | 2008.07.20 |
로그인이 안되는 문제 [1] | 젝망치 | 2008.07.21 |
오픈 아이디(OpenID)로만 로그인 허용하기 [7] | withover.com | 2008.08.07 |
권한 문제 때문에 생길 수 있는 문제 해결 방안 | 꽃들 | 2008.08.14 |
로그인 문제 및 첨부파일 안올라가는 문제 해결책(세션 문제일 경우..) [6] | 이홍석295 | 2008.08.20 |
라이프팟 연동에서 XML 주소 얻기 | 최재원541 | 2008.08.23 |
[우클릭 및 드레그 방지법] 및 [방지된 홈페이지 해재법] >0< [7] | 이홍석295 | 2008.09.03 |
PHP로 하면 올린는측 말고 받는측 서버에 권한이 100% Nobody로 됩니다.
물론 FTP로그인할때도 노바디로 엑세스 하는게 문제도 되지만..
윈도우 서버는 그런건 상관 없지만..;;
유닉스나 리눅스나 올릴데 소스에 권한 조정 명령어 안해놓으면(777)
삭제할때 골치좀 아플겁니다. 물론 삭제가 자연스럽게 되는서버도 있지만.-_-;;
차라리 쉘 스크립트를 쓰세요.. 노바디로 될 확률은 없습니다.. ncftp로 스크립트 짜는거 어렵지는 안을 겁니다...