Shellは自動的にダウンロードファイルをSFTPサーバーにアップロードする

1857 ワード

1.説明
ここでは、SFTPサーバに自動的に接続し、指定したファイルをアップロードまたはダウンロードするShellスクリプトを提供します.さらに、Linuxのcorntabコマンドを使用して、スクリプトアップロードダウンロードファイルをタイミングよく実行し、ファイルの同期またはバックアップ機能を実現することができます.
2.FTPとSFTPの違い
一般的にFTPを使用してダウンロードファイルをアップロードするが、LinuxのデフォルトではFTPは提供されず、FTPサーバを追加インストールする必要があり、一定のVPSサーバリソースを占有する.ここではFTPの代わりにSFTPを使用することをお勧めします.サーバ側プログラムを追加でインストールせずに、SSHのみのLinuxサーバを使用する場合は、SSHを開くとデフォルトでSFTPが開き、個別の構成を必要とせずに使用できます.SFTPは認証情報やデータを暗号化して伝送するので、比較的安全です.
3.lftpをインストールする
スクリプトではlftpコマンドを使用してSFTPサーバに接続する必要があります.rootユーザーを使用してインストールする必要がない場合は、yumインストールコマンドは次のとおりです.
yum install lftp -y

ダウンロードファイルを自動的にアップロードする鍵は、ユーザー名パスワードを自動的に入力することですが、sshを使用するツールscp、sftp、sshではパスワードを自動的に入力できないので、ここではlftpを使用して実現します.
4.アップロードスクリプト
アップロードスクリプトuploadFile.shの内容は次のとおりです.
#!/bin/bash
# SFTP    
# IP
IP=10.21.19.84
#   
PORT=22
#    
USER=yuwen
#   
PASSWORD=ai123456
#         
FILE=test.txt
#            
CLIENTDIR=/home/yuwen/sftp/upload
#            
SEVERDIR=/home/yuwen/sftp/download

lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <

スクリプトの前半では、IPアドレス、SFTPポート、ユーザー名、パスワード、およびアップロードするファイルのローカルパスとリモートパスを含むターゲットサーバ情報が主に構成されます.
スクリプトの下半分は自動アップロードを実現する鍵で、まずSFTPサーバーに自動的にログインし、cdはリモートディレクトリを切り替え、lcdはローカルディレクトリを切り替え、putはファイルをサーバーにアップロードする.
5.スクリプトのダウンロード
スクリプトuploadFile.shの内容を変更し、putアップロードコマンドをgetコマンドに変更すればよい.
get ${FILE}

6.タイミング実行スクリプト
毎日午前2時にアップロードスクリプトを実行します.
0 2 * * * sh /home/yuwen/uploadFile.sh

現在のcrontabタスクを表示するには、次の手順に従います.
crontab -l

crontabタスクを編集するには、次の手順に従います.
crontab -e

7.参考文書
タイミング実行Linux shellスクリプトSFTPタイミングアップロードダウンロードファイルftp/sftpタイミング自動アップロードファイルスクリプト(CentOS)ftpとsftpの違いsftpログインとコマンドライン使い方Linuxで鋭いFTPツール-lftpを実現