自動化されたftpコマンドを使用して、毎日リモートサーバーにファイルをアップロードしたいと思います。誰かが以下のコマンドが正しいか間違っているかを確認するのに役立ちますか?
curl -Tu username:password /path/to/dir/*(om[1]) sftp://sftp.example.com/remote/dir
どこ
username:password
私のユーザー名とパスワードです。/path/to/dir/*(om[1])
:私のローカルディレクトリから最新の(更新された)ファイルをインポートします。sftp://sftp.example.com/remote/dir
: 安全なファイル転送
答え1
コマンドラインに問題があります。確認できます。マニュアルページ。基本的にはそれを-T <file to be uploaded>
分離する必要があります-u <user:password>
。結局のところ、コマンドラインは次のようになります。
curl -T /path/to/dir/*(om[1]) -u username:password sftp://sftp.example.com/remote/dir
しかし、あなたが言及した正規表現が実際に何を意味するのかわかりません*(om[1])
。
もちろん、SFTPを使用している場合は、オプションに応じてユーザー名と--key
パスワードを使用するのではなく、SSH秘密鍵を使用して認証することもできます--key-type
。詳細については、上記のリンクを参照してください。
最後に質問はFTP
コマンドラインの例は次のとおりです。SFTP
しかし、これが私が提案したソリューションを変更してはいけません。
答え2
代わりにrsyncを使用しないのはなぜですか?パッケージマネージャを使用してインストールする必要があるかもしれませんが、これらの目的のために設計されています。
RSYNC_PASSWORD='password' rsync -rtv /path/to/dir/ [email protected]:remote/dir
-rは再帰的にrsyncし、-tはタイムスタンプを保持するため、既存のファイルは(効果的に)再アップロードされず、-vは冗長です。
SSH公開鍵を作成してコピーした場合は、このセクションを実行する必要はありませんRSYNC_PASSWORD='password'
。
公開/秘密鍵の組み合わせがない場合は、以下を実行してください。
ssh-keygen
それから
ssh-copy-key-id [email protected]
これは、リモートサーバーがファイルの関連付けと更新をサポートしていると仮定します。それ以外の場合は、公開鍵を使用して手動でファイルをアップロードする必要があり$HOME/.ssh/authorized_keys
ます。authorized_keys
これは、最新バージョンのLinuxを実行していると仮定します。 Mac OSなどのUnixシステムはそうではありませんssh-copy-key-id
。リモートホストに公開鍵を生成してインストールする方法の詳細は、次のとおりです。