저는 FTP를 통해 서버에 연결합니다(이것이 서버에 액세스할 수 있는 유일한 방법입니다). FTP를 통해 서버에 명령을 보내야 합니다. 다른 명령은 작동하지만 다음과 같은 명령을 시도하면
site for file in *;do utime 20120101084400 ${file}; done;
특정 디렉터리의 모든 날짜를 변경하려면 오류 메시지가 표시됩니다.목적: 테이블 형식또는잘못된 명령내가 시도하는 이 명령의 변형에 따라 다릅니다.
내 로컬 유닉스(사이트 부분 없이)에서 이 명령을 시도했는데 작동했지만 FTP를 통해 원격으로 작동하지는 않았습니다.
어떻게 해야 하나요? 이 작업을 재귀적으로 수행할 수 있는 방법이 있다면 추가 보너스가 될 것입니다... :)
감사해요.
답변1
허용되는 SITE
명령은 사용되는 FTP 데몬에 따라 다릅니다(예 SITE CHMOD
:vsftpd
;아직 좀 있어요아파치 FTP 서버). 일반적으로 말하자면,원격 쉘 시설이 아님기대하고 계시는 것 같습니다. 그러나 ProFTPd는 분명히지원하다SITE UTIME
.
따라서 FTPd에 문제가 있으면 SITE UTIME
시도해 볼 수 있습니다.SITE UTIME
클라이언트 루프, 이와 같이(유사 코드, 서버는 언급되지 않았습니다. 또한 공백이 있을 수 있음을 기억하십시오(따옴표 필요). 또한 다목적 FTP 클라이언트가 필요합니다(lftp
좋은 후보가 될 수 있습니다)):
for file in $(./ftp-get-directory-list)
do ftp-client -c "SITE UTIME ${file}"
done
편집하다또한보십시오Giles는 여기에 훌륭한 답변을주었습니다.Bash 스크립트 및 lftp
.
부록특정 스크립트 언어(예: Python)를 선호하는 경우 다음을 수행할 수도 있습니다.일부 FTP 라이브러리 사용.