パテを使用して大容量ファイルをリモートサーバーに転送しようとしています。ファイルの転送中に(ファイルが大きく、転送に時間がかかるため)、権限はデフォルトの読み取り専用(rw-r----)に設定されます。
ファイル転送中(ファイルの転送中)にファイルの権限を設定する必要があります。パテでどうすればいいですか?誰でも提案をしてください。
私はLinuxコマンドを初めて使用します。私が従うことができるいくつかの構文を提供できますか?
答え1
私の考えではこの回答これがあなたが探しているものです。
説明を追加できるようにここに貼り付けます。
rsync
次の方法で資金を振り替えることができます。rsync --chmod=u+rwx,g+rwx,o+rx file.txt user@host:abc/
これにより、ファイルがホーム内のディレクトリに移動され、file.txt
指定された権限も設定されます。ホームディレクトリ内のパスの代わりに絶対パスを設定する必要がある場合は、先行スラッシュを含むフルパスを作成します(例:)。abc
user
host
user
user@host:/abs/path/
を使用する場合は、
scp
転送後に権限を設定できます。scp file.txt user@host:abc/ ssh user@host 'chmod 755 abc/file.txt'
これは前の手順と同じですが、最初にアップロードして権限を変更する2つのコマンドに分けられます。アップロードと同様に、1つのコマンドのみを使用して処理するように依頼しましたが、他の人に役立つ追加のオプションがあると思いました。
答え2
実際のPuTTYアプリケーションは端末エミュレータであり、ファイル自体を転送しません。ただし、ファイル転送コマンドがpsftp
付属しています。pscp
残念ながら、ファイル権限設定は許可されてpsftp
いません。pscp
しかし、ファイル転送中です。オプションはファイルタイムスタンプを-p
保持pscp
しますが、権限は保存しません。を使用している場合、psftp
ファイル転送コマンドにリモート権限を指定するオプションはput
ありませんが、転送が完了した後に別のコマンドを使用してファイル権限を設定できます。mput
chmod
chmod
コマンドの詳細については、PuTTYのマニュアルの6.2.14章を参照してくださいpsftp
。
ファイルが転送されるとすぐに自動的に処理する機能がある場合は、psftp
まず次のいずれかの方法でファイルを転送する必要があります。
- 別のディレクトリへ
- または一時ファイル名いいえオートメーションが探しているものと一致
転送が完了したら、権限設定を使用しchmod
、最後にmv
コマンドを使用してファイルをオートメーションで使用するディレクトリに移動するか、ファイル名を実際の意図した名前に変更します。
(POSIX準拠のUnixスタイルのファイルシステムでは、単一のファイルシステム内でファイルを移動または名前を変更するすべての操作は、次のようにする必要があります。原子的演算つまり、他のプロセスはファイル操作を「まだ完了していない」または「完全に完了しました」として扱いますが、いかなる方法でも「進行中」として処理しません。このプロパティは、ファイルが完全に転送され、アクセスを許可する権限を持つまで自動化が期待するファイルを表示できないようにするためにここで使用されます。 )
また、このプロセスは、自動化がまだ転送中であるか、転送中にネットワーク接続が失敗したために不完全なファイルをキャプチャしないようにするのにも役立ちます。
たとえば、次のスクリプトを作成できます。 (例filetransfer.scr
:)
cd /some/directory
mkdir incomplete_xfer
cd incomplete_xfer
put file.txt
chmod a+rw file.txt
mv file.txt ..
cd ..
rmdir incomplete_xfer
次に実行します。
psftp remoteuser@remotehost -b filetransfer.scr
または、リモート側で*.xml
ファイルを予想し、他のサフィックスがあるファイルに反応しないことがわかっている場合は、次のこともできます。 (代替filetransfer.scr
)
cd /some/directory
put file.xml file_tmp_incomplete_xfer
chmod a+rw file_tmp_incomplete_xfer
mv file_tmp_incomplete_xfer file.xml