FTP 서버의 디렉터리에서 가장 오래된 파일을 삭제하는 cron 작업을 만들고 싶습니다. 첫 번째 쉘 스크립트를 만들었습니다.
#!/bin/sh
# connect to backup FTP server...
lftp -u (username),password backup.contabo.net << EOF
cd /backups
ls
EOF
이게 내가 얻은 거야http://image.prntscr.com/image/72a86bf453c849a8af4a3340e4936172.jpeg
몇 가지 검색을 수행하고 VPS의 테스트 폴더 내부 터미널에서 테스트하면(새로 생성된 .txt 파일 포함) 다음 줄이 작동합니다.
rm "$(ls -t | tail -1)"
...하지만 쉘 스크립트에 넣고 실행하면 다음과 같은 결과 bash testing.sh
가 나옵니다.
rm: 액세스 실패: 550 index.php: 해당 파일이나 디렉터리가 없습니다.
스크립트가 index.php를 삭제하려고 하는 이유는 무엇입니까? 파일 목록에도 안보이네요. 삭제해야한다01December_01_2016_html.tar
편집하다 자, 드디어 파일 삭제에 성공했는데, 파일명을 수동으로 작성하게 되었습니다.
rm /backups/01December_01_2016_html.tar
그래서 먼저 파일 이름이 포함된 변수를 만들어서 전달할 수 있도록 하고 싶습니다. rm /backups/$FILENAME.tar
아래 코드에서 오류가 발생하기 때문에 그렇게 하지 않겠습니다. Unknown command 'FILENAME="testing.sh"
이는 기본적으로 동일합니다. 즉, 이제 FTP 디렉터리 대신 로컬 디렉터리에 있는 최신 파일을 가져옵니다(단일 파일이 ls
모든 파일을 제대로 검색하더라도).
FILENAME="$(ls -t | tail -1)"
echo $FILENAME