投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/7/7 12:31:07
> おそらくサーバーは UNIX 系だと思うのですが
サーバーの OS や FTP デーモンの具体的な情報があった方が調べやすいかと思います。
FTP デーモンのソフトウェア名やバージョンを確認することはできますか?
コマンド プロンプトから『ftp server.example.com』で繋いでみると、FTP サーバーの情報が得られるかも。


> サーバー上のファイルのタイムスタンプがアップロードした日付となってしまいます
ファイルシステムの更新日時と、FTP の更新日時は異なりますので、ご注意ください。

前者は通常、ローカル時刻で管理されますが、後者は世界標準時で管理されます。
(世界標準時に +9 時間したものが、日本標準時(JST)となります)
FTP クライアントによっては、この時差を考慮した時間に補正して表示してくれるものもありますね。

しかし、タイムスタンプを意図的に変更できるかどうかは実装依存となっています。

FTP 仕様としては、RFC 3659 の
 MDTM コマンド … 最終更新時間の詳細 (File Modification Time)
というのがあるのですが、これはあくまで取得用。

提案段階としては、いわゆる MF 系コマンドとして
 MFMT コマンド … 更新時刻の変更 (Modify Fact: Modification Time)
 MFCT コマンド … 作成時刻の変更 (Modify Fact: Creation Time)
などが挙がっていたのですが、正式仕様に盛り込まれるには至っていないと思います。
https://www.ietf.org/archive/id/draft-somers-ftp-mfxx-04.txt
https://tools.ietf.org/id/draft-somers-ftp-mfxx-01.txt


まずはお使いのサーバーが MFMT コマンドをサポートするかどうかを確認してみてください。
(サポートしているコマンドの一覧は、FEAT あるいは HELP コマンドで調べられます)

FTP が更新日時の変更をサポートしていない場合には、次策として
FTP 以外のアップロード手段についても検討してみてください。
たとえば WebDAV をサポートしているサーバーならば、
PROPPATCH で getlastmodified を指定できるかもしれません。