回答:
元のディレクトリの新しいファイルのみを更新する場合、または宛先にすでに存在するすべてのファイルをスキップする場合はrsync
、を使用して渡します。-u
--ignore-existing
rsync -au /local/directory/ host:/remote/directory/
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
(/
ソース側に注意してください:これrsync
がないと作成されます/remote/directory/directory
。)
--ignore-existing
置き換えずに追加すると、どのようなデータの損失が発生しますか?
rsync
容易に入手する(Win32の-OpenSSHのような)....
--rsync-path
必要があるが)
scpは、ファイルへの書き込み権限がある場合、ファイルを上書きします。
言い換えるscp
と、それらのファイルの書き込み許可を一時的に削除することにより、ファイルを効果的にスキップできます(ファイルの所有者である場合)。
scp -r user@server.com:/location/of/files/* /local/location/
宛先ファイルのコンテンツを読み取り専用にできる場合:
find . -type f -exec chmod a-w '{}' \;
実行する前にscp
(文句を言い、既存のファイルをスキップします)。
そして、それらを後で変更します(chmod +w
umaskベースの値を取得するため)。ファイルにすべてのumaskによる書き込み許可がない場合は、何らかの方法でそれらを復元できるように許可を保存する必要があります。
(Gillesの回答は既存のファイルがローカルの方が新しい場合は上書きされます。そのようにして貴重なデータを失いました。その間違った有害な回答がどうして多くの賛成票を持っているのか理解できません)。
rsync --ignore-existing
データが失われましたか?
find: missing argument to '-exec'
このコマンドを使用してエラーが発生したため、代わりに:を使用する必要がありましたfind . -type f -exec chmod a-w {} \;
。私のLinuxは悪いです、ymmv。
find . -type f -exec chmod a-w {} \;
私は、私の場合、私は使用できませんでした、同様のタスクを持っていたrsync
、csync
私のストレージのみSFTPを持っているため、またはFUSE。rsync
ファイルの日付と時刻を変更できなかったため、他のユーティリティ(などcsync
)が他のエラーを表示しました:「一時ファイルを作成できませんクロックスキューが検出されました」。
ストレージサーバーにアクセスできる場合- ここでデーモンとしてインストールopenssh-server
または起動rsync
します。
私の場合、これはできませんでした。解決策はlftpでした。lftp
の同期化の使用法は次のとおりです。
lftp -c "open -u login,password sftp://sft.domain.tld/; \
mirror -c --verbose=9 -e -R -L /srs/folder /rem/folder"
/src/folder
-は私のPC上のフォルダです/rem/folder
-はsftp://sft.domain.tld/rem/folder
です。
リンクでmanページを見つけることができます:http : //lftp.yar.ru/lftp-man.html
scp
ファイルを上書きし、それを停止するスイッチはありませんが、途中でコピーしてscpを実行し、既存のファイルをコピーして戻すことができます。例:
すべての既存のファイルを途中までコピーする
mkdir original_files ; cp -r * original_files/
scpを使用してすべてをコピーする
scp -r user@server:dir/* ./
scpが上書きしたものの上に元のファイルをコピーします。
cp -r original_files/* ./
これを実現する別の方法はls
、宛先フォルダーでを実行することです:
リモート宛先フォルダー:
ls | awk '{print "mv " $1 " ../copied_data/"}' > mv_copied_data
scp mv_copied_data user@source.server.com:/path/to/source/folder
ソースで:
cd /path/to/source/folder
chmod 777 mv_copied_data
./mv_copied_data
目的地で:
scp -r user@source.server.com:/path/to/source/folder /path/to/destination/foldeer
-
>
スペース改行またはその他の特殊文字が含まれている場合、答えは危険です。3. Pythonスクリプトでforループをハードコーディングします。実行時にプログラムを生成することは、多くの理由から(プロのプログラマーが行ったとしても)難しくて難しいです。シェルスクリプトの生成はさらに悪い-ひどい考えです。