タイムスタンプを維持してファイルをアップロードする方法(SFTP転送)

カテゴリ:FTP

画像ビューアなど、ファイルのタイムスタンプを基に年や月などでファイルをフィルタするWebアプリを作成している人もるかと思います。

その場合、画像ファイルをFTPで定期的にローカルにバックアップを取る際はタイムスタンプは保持されます。しかし、逆にサーバにアップロードする場合、タイムスタンプが現在の日時に書き換わってしまい、タイムスタンプに基づくビューアのフィルタで不具合が起きてしまう事があります。

FTPでタイムスタンプを保持してファイルをアップロードする事も可能なのですが、それにはFTPサーバ側でMFMTコマンドが有効である必要があります。
しかし、代表的なFTPサーバアプリであるvsftpはこのMFMTコマンドに対応していません

このような場合、解決策としてSFTPを利用する方法があります。

SFTP接続の設定

SFTPはFTPと名が付きますが、実際にはSSHプロトコルを用いた接続です。つまりSSHの公開鍵認証と同様の仕組みで接続、ファイル転送を実施する方法となります。

SFTP設定の流れは以下となります。(FTPクライアントとしてFileZillaを使用する場合)

  1. SSHの公開鍵認証を設定します。(もし設定していない場合)

    NoteすでにSSH公開鍵認証を行なっている環境であれば、その秘密鍵を利用可能です。

  2. FileZillaの [設定] > [SFTP] で [鍵ファイルの追加] ボタンより秘密鍵を指定します。

    NoteもしMacの/Users/xxx/.ssh/配下の秘密鍵を指定したい場合は、shift + command + G キーの同時押しでパスを指定できます。

  3. FileZillaのサイトマネージャーの接続設定の [一般] タブで、プロトコルをSFTPにし、ホストを指定、ログオンタイプは通常、ユーザーにログインするユーザーを指定します。(パスワード欄は空でOK)

    Note[詳細] タブなど他の設定は、FTPと同様に設定してください。

以上で完了です。正常に接続できるかを確認してみましょう。

注意 SSHの公開鍵認証と同様に以下に注意が必要です。
ログインユーザーごとに、秘密鍵・公開鍵のペアの設定が必要です。(但し、鍵の使い回しはOK)
公開鍵(authorized_keys)の所有者はログインユーザーである必要があります。
公開鍵のパーミッションは600である必要があります。

鍵の使い回しについて

鍵の使い回しについては、サーバ側に置くのは公開鍵のみであるため、セキュリティ上のリスクは特にありません。
※公開鍵は元々公開されている鍵であるため中身を見られても、盗まれても問題のない鍵です。

但しクライアント側(FileZillaに指定した)の秘密鍵は漏洩しないように厳重に管理する必要があります。

公開日時:2020年04月17日 19:00:52

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

FTPに戻る

このページのトップに戻る