GNU/Linux >> Linux の 問題 >  >> Linux

scp でファイルを _MOVE_ する方法は?

解決策 1:

--remove-source-files では、ssh 経由の rsync がおそらく最善の策です。 オプション

rsync -avz --remove-source-files -e ssh /this/dir [email protected]:/remote/dir 

簡単なテストで得られる;

[[email protected] ~]$ mkdir test1
[[email protected] ~]$ mkdir test2
[[email protected] ~]$ touch test1/testfile.1
[[email protected] ~]$ ls test1/
testfile.1
[[email protected] ~]$ rsync --remove-source-files -av -e ssh test1/testfile.1 [email protected]:/home/tomh/test2/
sending incremental file list

sent 58 bytes  received 12 bytes  10.77 bytes/sec
total size is 0  speedup is 0.00

[[email protected] ~]$ ls test1/
[[email protected] ~]$
[[email protected] ~]$ ls test2/
testfile.1

@SvenW が述べたように、-e ssh はデフォルトなので省略可能です。

解決策 2:

rsync を使用 scp の代わりに :

rsync -avz --remove-source-files /sourcedir [email protected]:/targetdir 

man rsync の詳細情報 .

解決策 3:

この質問には問題なく回答があり、回答は受け入れられましたが、フロント ページの上部に表示されているので、エレガントではないとしても、少なくともより正確に回答しようと思いました。はい、scp からの戻りコードを使用できます 、そして私はよくそれをします。 bash で :

scp foo [email protected]:/destination && rm foo

複数のファイルをコピーし、スタックの障害を正しく処理することについてのあなたの意見を参考にします。したがって、複数のファイルの場合:

for file in bar*; do scp "$file" [email protected]:/destination && rm "$file" ; done

この最後は ssh-agent を使用している場合にのみ実用的です 、しかし、私はあなたがそうであることを願っています.

解決策 4:

私の状況では、ssh ポートは 22 ではないので、

rsync -avz --remove-source-files -e "ssh -p $portNumber" [email protected]:/path/to/files/ /local/path/

解決策 5:

私のように古いターゲット サーバーを使用している場合は、使用できません

--remove-source-files

ただし、使用する必要があります

--remove-sent-files --protocol=29


Linux
  1. SCPを使用してファイルを安全に転送する方法

  2. Linuxでfdコマンドを使用してファイルを検索する方法

  3. SCP と Rsync を使用して Linux でファイルを転送する方法

  1. Linuxでgocryptfsを使用してファイルを暗号化する方法

  2. Linuxでファイルを解凍する方法(例付き)

  3. 特定のサブパスを持つファイルを見つける方法は?

  1. Rsyncでファイルとディレクトリを除外する方法

  2. SCPとRsyncでファイルをコピーする

  3. scp を使用して複数のファイルを同時にコピーする方法