쓰레기 파일 관련으로 이런 소스를 봤는데요
본문
<?
/*
본팁은 디비에 저장되지않은 쓰레기 파일을 골라내기위해 임시적으로 만든겁니다
경우에따라 유용하게 쓰세요
*/
include_once("./_common.php");
$data_path = $g4[path]."/data/file/"; //원본디렉토리
$m_data_path = $g4[path]."/data/file/m_img/"; //대상디렉토리
$cnt=0;
if ($bo_table=="" && $mkdir==""){
echo "디렉토리를 먼저 생성하시요 또는 bo_table 변수값을 커리로 넣으시요";
exit;
}
if ($mkdir=="y"){ // 먼저 폴더생성시킨다 #########################
$sql = " select distinct(bo_table) from g4_board_file order by bo_table asc";
$res = sql_query($sql);
for ($i=0; $row=sql_fetch_array($res); $i++){
echo $m_data_path.$row[bo_table]."<br>";
@mkdir($m_data_path.$row[bo_table], 0707);
@chmod($m_data_path.$row[bo_table], 0707);
$cnt=$cnt+1;
}
echo $cnt."개 디렉토리생성 완료"
}
if ($bo_table){#############################파일을 복사한다
$sql = " select * from g4_board_file ";
$sql .=" where bo_table='".$bo_table."'";
$res = sql_query($sql);
for ($i=0; $row=sql_fetch_array($res); $i++)
{
$files=$data_path.$row[bo_table]."/".$row[bf_file]; //원본 파일경로
$m_files=$m_data_path.$row[bo_table]."/".$row[bf_file]; //복사될 새로운 파일경로
if (file_exists($files) && !file_exists($m_files)){
//echo "<img src='".$files."' height=10><br>";
copy($files,$m_files);
$cnt=$cnt+1;
}
}
echo $cnt."개 복사 완료";
}
/*
사용하는 방법;
위 소스내용을 그누설치된 곳에 file_copy.php로 저장하고
1) http://사이트주소/file_copy.php?mkdir=y 를실행시키고
2) 그다음에http://사이트주소/file_copy.php?bo_table=원하는테이블명
을 실행시키세요
실행 결과 :
/data/file 안에 있는 파일중에 디비에서 실제 사용하고있는 파일들만
/data/file/m_img/ 로 복사된다
참고로 파일갯수 무진장 많은경우에 스크립트 실행시간 초과 에러날경우
에러안날때까지 2)번 과정을 반복 실행하면 될겁니다
*/
?>
디비와 연결되어 있는 파일만 골라서 다른 폴더로 복사를 하는데 어떻게 활용을 해야 될지 모르겠네요
연결이 안된 파일을 지워 주는게 더 나을꺼 같은데 연결이 되지 않았을때 삭제는 어떻게 해줘야 될까요
답변 1
위소스는 디비와 연결 된 파일만 이동 시는 것으로 위 주석 의 내용 대루 된다면
우선 실험을 해보세요
게시판을 하나 생성 하고 거기에 첩부 파일을 올리면
/data/file/게시판 table명 으로 폴더가 생성되고 거기에
파일이 있는데 거기에 쓸대없는 파일을 올려 놓고
위 파일 소스를 실행 시켜 보세요
그럼 알수있지 안을까 생각되네요