이 폴더에는 파일이 가득 차 있습니다.
하루에 한 번씩 최신 파일이 FTP를 통해 자동으로 파일 서버로 전송되기를 원합니다.
답변1
다음 줄을 사용하여 파일 이름을 가져오는 짧은 스크립트를 만듭니다.
newestfilename=`ls -t $dir| head -1`
( $dir
관심 있는 디렉터리라고 가정하고) $filename
FTP 명령을 입력합니다. 물론 cron
이 스크립트는 하루에 한 번 실행됩니다.
그렇다면 파일에서 다음 명령을 사용할 ncftp
수 있습니다 .ftp
ncftpput -Uftpuser -Pftppasswd ftphost /remote/path $dir/$newestfilename
ncftp가 없으면 다음과 같이 작동할 수 있습니다.
ftp -u ftp://username:[email protected]/path/to/remote_file $dir/$newestfilename
답변2
최신 파일 찾기
디렉토리에서 최신 파일을 찾는 가장 쉬운 방법은 zsh와 해당 파일을 사용하는 것입니다.글로벌 예선 om
수정 시간별로 정렬하고 [1]
가장 최근 일치 항목을 선택합니다.
upload /path/to/dir/*(om[1])
좋은 휴대용 방법은 없습니다. 이식 가능한 유일한 방법은 ls -t
날짜별로 파일을 나열하고 결과를 구문 분석하는 것입니다.파싱에는 ls
위험이 따른다. 파일 이름에 줄 바꿈이나 인쇄할 수 없는 문자가 포함되어 있지 않다고 확신하는 경우에만 이 작업을 수행하십시오.
upload "$(ls -t /path/to/dir | head -n 1)"
FTP 업로드
업로드에는 다양한 도구가 있습니다. 일반적으로 사용되는 설치 방법은곱슬.
curl -T /path/to/local/file ftp://ftp.example.com/remote/dir
또 다른 접근 방식은 원격 디렉터리를 파일 시스템으로 마운트하는 것입니다.컬 파일 시스템.
mkdir ftp.example.com
curlftpfs ftp.example.com ftp.example.com
cp -p /path/to/local/file ftp.example.com/remote/dir/
작업 자동화
하나 추가예약 된 일들매일 미션을 수행하세요. 다음과 같은 줄을 실행 crontab -e
하고 추가하세요.
SHELL=/bin/zsh
42 3 * * * curl -T /path/to/dir/*(om[1]) ftp://ftp.example.com/remote/dir
답변3
이것은 제가 직접 만든 스크립트입니다.
#! /usr/bin/bash
SRCFOLDER="$1"
mountpoint="/home/$(whoami)/ftp"
mkdir "$mountpoint" > /dev/null 2>&1 # temporary ftp path
if [ $(whoami) == "root" ]
then
echo "Dont execute as root!"
exit -1
fi
if [ $# != 1 ]
then
echo "Usage: terser (/source/folder)"
exit 1
fi
if [ "${SRCFOLDER: -1}" != "/" ] # adds a "/" at end of path
then
SRCFOLDER+="/"
fi
if [ -e "$SRCFOLDER" ]
then
FILE=$(ls -t1 $SRCFOLDER | head -n 1)
echo "Newest file is: $FILE"
if [ $FILE == "" ]
then
echo "The folder $SRCFOLDER is empty!"
fi
echo "Mounting ftp..."
curlftpfs "username:[email protected]" "$mountpoint" "-o" "disable_eprt" # if you use tls(port 22) do: "disable_eprt,tlsv1"
echo "Mounted FTP"
echo "Copying to ftp..."
cp "$SRCFOLDER$FILE" "$mountpoint/path/" # after "$mountpoint/" enter your path for your backups
echo "Copied to ftp"
sleep 2
fusermount -u $mountpoint
echo "Unmounted ftp"
sleep 3
rmdir "$mountpoint"
else
echo "The folder $SRCFOLDER does not exist!"
fi
! 33행과 36행을 편집하세요! (FTP 서버의 FTP 연결 및 경로)
/usr/bin/* 또는 /sbin/*에 넣고 파일 이름과 소스 폴더로 실행하면 됩니다. 예를 들어:
scriptname /home/archuser/backups/
다른 방법:
스크립트를 파일에 넣고 다음을 수행하십시오.
./scriptname /home/archuser/backups/
또는
bash scriptname /home/archuser/backups/
이를 위해 CronJob을 생성하면 당신은 운이 좋은 사람입니다 :)