Intereting Posts
С сыром автоматически возьмите рис и бросьте Каков правильный синтаксис sudoers для добавления пользователя? Настройка сканера Epson Stylus NX420 на Debian Wheezy Программа действует по-разному в зависимости от пользователя Каковы понятия «кольцевой буфер ядра», «уровень пользователя», «уровень журнала»? returncode команды в pipline Изменение времени файла с помощью сенсорного Как проверить, что использует логический том? Получил новый ноутбук с аппаратными средствами, которые все еще не поддерживаются. Должен ли я ждать или возвращать его? Раздел загрузки Windows отсутствует после установки Kali Linux. Как вычесть строки из первой строки с помощью awk? SSH запрашивает фразу-пароль, хотя ssh-agent / keychain работает Что означает «fs» для функции ядра «get_fs ()»? Как преобразовать текст так, чтобы каждая выходная строка начиналась с названия блока? Приглашение xscreensaver выводится без движения мыши

Как скопировать файлы из списка имен файлов и безоговорочно сохранить существующий файл в месте назначения?

Как скопировать файлы из списка имен файлов и безоговорочно сохранить существующий файл в месте назначения?

Примечание. По умолчанию cpio перезаписывает старые существующие файлы:

$ dpkg -L libgcc1 libstdc++6 |grep -e '^/lib/' -e '^/usr/lib/' | cpio -pdv ./test ./test/lib/i386-linux-gnu cpio: ./test/lib/i386-linux-gnu/libgcc_s.so.1 not created: newer or same age version exists ./test/usr/lib/i386-linux-gnu cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 not created: newer or same age version exists cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6 not created: newer or same age version exists 0 blocks $ touch -ht 200102030405 $(find . ) $ dpkg -L libgcc1 libstdc++6 |grep -e '^/lib/' -e '^/usr/lib/' | cpio -pdv ./test ./test/lib/i386-linux-gnu ./test/lib/i386-linux-gnu/libgcc_s.so.1 ./test/usr/lib/i386-linux-gnu ./test/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 ./test/usr/lib/i386-linux-gnu/libstdc++.so.6 3222 blocks $ #same version $ dpkg -L libgcc1 libstdc++6 |grep -e '^/lib/' -e '^/usr/lib/' | cpio -pdv ./test ./test/lib/i386-linux-gnu cpio: ./test/lib/i386-linux-gnu/libgcc_s.so.1 not created: newer or same age version exists ./test/usr/lib/i386-linux-gnu cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6.0.22 not created: newer or same age version exists cpio: ./test/usr/lib/i386-linux-gnu/libstdc++.so.6 not created: newer or same age version exists 0 blocks $ cp --version cp (GNU coreutils) 8.26 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering. $ 

Это невозможно сделать с помощью cpio .

Однако вы можете использовать star чтобы сделать работу. Просто позвони:

 star -xpk < archive-name 

Кстати: я не уверен, что GNU cpio ведет себя корректно, но cpio часто используется в управлении системой, потому что он имеет недокументированную функцию для извлечения файлов сначала во временное имя и, если это удалось, для вызова rename(2) для замены старого файла в неразрушающий путь. Таким образом, официальный cpio (не обязательно GNU cpio) ведет себя как программа install .

Если вы хотите получить такое поведение со звездочкой, добавьте опцию -install .