cpコマンドは既存のファイルを上書きしません。

cpコマンドは既存のファイルを上書きしません。

gitリポジトリのファイルを仮想ホストフォルダにコピーしていますが、次のいずれのコマンドも既存のファイルを上書きしません。

sudo cp -R /home/git/repo /var/www/website
sudo cp -R -f /home/git/repo /var/www/website

cpコマンドが既存のファイルを上書きすることをどのように確認できますか?


編集:webdirからリポジトリにファイルをコピーするクイックテストがファイルを上書きするので、明らかに何か(www-data?)がwebdirのファイルをロックしています。出力mount

~$ mount | column -t
sysfs       on  /sys                             type  sysfs       (rw,nosuid,nodev,noexec,relatime)
proc        on  /proc                            type  proc        (rw,nosuid,nodev,noexec,relatime)
udev        on  /dev                             type  devtmpfs    (rw,nosuid,relatime,size=1005964k,nr_inodes=251491,mode=755)
devpts      on  /dev/pts                         type  devpts      (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs       on  /run                             type  tmpfs       (rw,nosuid,noexec,relatime,size=204840k,mode=755)
/dev/vda1   on  /                                type  ext4        (rw,relatime,errors=remount-ro,data=ordered)
securityfs  on  /sys/kernel/security             type  securityfs  (rw,nosuid,nodev,noexec,relatime)
tmpfs       on  /dev/shm                         type  tmpfs       (rw,nosuid,nodev)
tmpfs       on  /run/lock                        type  tmpfs       (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs       on  /sys/fs/cgroup                   type  tmpfs       (ro,nosuid,nodev,noexec,mode=755)
cgroup      on  /sys/fs/cgroup/systemd           type  cgroup      (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore      on  /sys/fs/pstore                   type  pstore      (rw,nosuid,nodev,noexec,relatime)
cgroup      on  /sys/fs/cgroup/hugetlb           type  cgroup      (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup      on  /sys/fs/cgroup/freezer           type  cgroup      (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup      on  /sys/fs/cgroup/cpu,cpuacct       type  cgroup      (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup      on  /sys/fs/cgroup/memory            type  cgroup      (rw,nosuid,nodev,noexec,relatime,memory)
cgroup      on  /sys/fs/cgroup/devices           type  cgroup      (rw,nosuid,nodev,noexec,relatime,devices)
cgroup      on  /sys/fs/cgroup/net_cls,net_prio  type  cgroup      (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup      on  /sys/fs/cgroup/pids              type  cgroup      (rw,nosuid,nodev,noexec,relatime,pids)
cgroup      on  /sys/fs/cgroup/blkio             type  cgroup      (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup      on  /sys/fs/cgroup/cpuset            type  cgroup      (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup      on  /sys/fs/cgroup/perf_event        type  cgroup      (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1   on  /proc/sys/fs/binfmt_misc         type  autofs      (rw,relatime,fd=27,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
debugfs     on  /sys/kernel/debug                type  debugfs     (rw,relatime)
mqueue      on  /dev/mqueue                      type  mqueue      (rw,relatime)
hugetlbfs   on  /dev/hugepages                   type  hugetlbfs   (rw,relatime)
fusectl     on  /sys/fs/fuse/connections         type  fusectl     (rw,relatime)
tmpfs       on  /run/user/1000                   type  tmpfs       (rw,nosuid,nodev,relatime,size=204840k,mode=700,uid=1000,gid=1000)

そして:

df -h /var/www
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        30G   20G  8.9G  69% /

ベストアンサー1

代わりに大きな木cpに使用することをお勧めします..tar

はい、私はcp -r構文をほとんど使用しません(ハードリンクバックアップを除いてcp -al非常に具体的です)。

tarの構文は、大きなツリーをコピーするためのさまざまな最適な設定を可能にします。コピーできるものとコピーできないもの(ファイル、権限、所有者など)を参照してくださいman tar

私はtar次のコマンドに精通していることを好みます。

ローカルホストから:

 tar -cpC /path/to/source . | tar -xpC /path/to/target

.(指定事項にご注意ください。何を保存するのか)。

tarリモートレプリケーションに精通していると役に立ちます。

ssh user@remotesource tar -zcpC /path/to/source . | tar -zxpC /path/to/target

または

tar -zcpC /path/to/source . | ssh user@targethost tar -zxpC /path/to/target

でも

ssh user@remotesource tar -zcpC /path/to/source . |
    ssh user@targethost tar -zxpC /path/to/target

リモートおよび/または他のホストからユーザーアカウントをコピーするときは、次の--numeric-ownerオプションが好きです。

  • --one-file-systemローカルファイルシステムにアーカイブ
  • --overwrite既存のファイルを上書き
  • -T, --files-from FILEFILEから抽出または生成する名前を取得する
  • -zgzip圧縮の使用

代わりtarに使用しませんか?cpio

〜のようにimz - イワン・ザハリャチェフコメントアウトするとcpio同じことができますが、構文は異なります。

cpio保存する必要があるinodeのリスト(ファイル、ディレクトリ、開発、ソケット、fifo)ファイル提出者STDIN

しかし、cpioモデルを提供--pass-throughファイルを別のディレクトリにコピーできます。

これは構文をより強力にしますが、このリストを作成するときfindの力を使用してfind必要なものを正確にコピーできます。

cd /path/to/source
find . \( -type f -o -type d \) ! -name '*.foo' -print0 | 
    cpio --null -pvd /path/to/destination

リモートで使用すると、次のことができます。

ssh user@remotesource /bin/sh <<<'cd /path/to/source;
    find . \( -type f -o -type d \) ! -name '*.foo' -print0 |
    cpio --null -o |
    gzip' |
  ssh user@targethost 'cd /path/to/destination && gunzip | cpio -id'

おすすめ記事