От man find
:
- исполнительная команда {} +
This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the command. The command is executed in the starting directory.
Например, с find -exec touch -t 201007162310.00 \+
, если команда находки без -exec
дает Вам файлы 1.txt
, 2.txt
и 3.txt
, это будет должностное лицо:
touch -t 201007162310.00 1.txt
touch -t 201007162310.00 2.txt
touch -t 201007162310.00 3.txt
без \+
, и
touch -t 201007162310.00 1.txt 2.txt 3.txt
с \+
.
Последняя версия происходит быстрее из-за (намного) меньшего числа новых процессов, необходимых все же, это менее портативно (не все find
реализации поддерживают его). И конечно, если команда Вы пытаетесь -exec
не поддерживает получение нескольких файлов как аргументы, оно не будет работать.
Я понял, что забыл упомянуть, что прервал cp -a
после проверки пункта назначения в другом терминале, поскольку копировал более 300 ГБ данных.
Благодаря комментарию Жиля я начал тестировать, происходит ли это только с каталогами или нет. Как показывают тесты ниже, в основном все файлы записываются с правами root, а старые атрибуты применяются к файлу / каталогу после завершения копирования.
TEST_1: папка размером 3 ГБ и CTRL-C во время sudo cp -a
: текущий файл усекается, остается корневым, как и каталог.
home/Download# ls -l
total 20
drwx------ 3 root root 4096 Jul 19 15:11 ./
drwxr-xr-x 3 user user 12288 Jul 19 15:11 ../
drwx------ 2 root root 4096 Jul 19 15:11 thecakeisalie/
home/Download# cd thecakeisalie/; ls -l
total 16164
drwx------ 2 root root 4096 Jul 19 15:11 ./
drwx------ 3 root root 4096 Jul 19 15:11 ../
-rw------- 1 user user 2109623 May 19 2013 file1
-rw------- 1 user user 2520465 May 19 2013 file2
-rw------- 1 root root 393216 Jul 19 15:11 file3
TEST_2: Разрешить завершение sudo cp -a
:
home/Download# ls -l
total 20
drwx------ 3 user user 4096 Jul 19 15:11 ./
drwxr-xr-x 3 user user 12288 Jul 19 15:11 ../
drwx------ 2 user user 4096 Jul 19 15:11 thecakeisalie/
home/Download# cd thecakeisalie/; ls -l
total 16164
drwx------ 3 user user 4096 Jul 19 15:11 ./
drwxr-xr-x 3 user user 12288 Jul 19 15:11 ../
-rw------- 1 user user 2109623 May 19 2013 file1
(...)
-rw------- 1 user user 2520465 May 19 2013 last_file
Мне это кажется очень странным - то, что вы описали, определенно не известная проблема. Я широко использовал cp -a
(в том числе для клонирования целых систем Linux), и единственный раз, когда я видел проблему, она была вызвана ошибкой в XFS (которая позже была исправлена).
Я предполагаю, что это ошибка в btrfs
, которая все еще находится в стадии интенсивной разработки. Это воспроизводимо? Можете ли вы попробовать скопировать те же исходные каталоги в новое место в целевой файловой системе и посмотреть, сохранены ли разрешения. Если он воспроизводимый, вы можете отправить отчет об ошибке .