Файлы изменяются при передаче от ext2 до ext3 к ext4?

xargs преобразовывает вход к аргументам. -I опция указывает строку, которая будет использоваться в качестве заполнителя для аргумента. Поэтому, если конвейер производит что-то как

file1
file2

затем xargs строка преобразовывает это к

cp -p file1 ../htory2/somefile.CSV
cp -p file2 ../htory2/somefile.CSV

head -1 только возвращают одна строка, тем не менее, таким образом, я не вижу реальной выгоды использования xargs вместо, сказать

cp -p "$(ls -t1 ../htory/$filename* | head -1)" ../htory2/somefile.CSV

Кроме того, так как конечный файл всегда является тем же, он будет перезаписан последним файлом в ${files[@]}.

3
11.09.2014, 15:45
1 ответ

Содержимое файла будет таким же. Метаданные о файле - время модификации, номер inode, разрешения и т. Д. - могут изменяться в зависимости от того, как именно вы делали копию. Этот материал хранится в файловой системе отдельно от самих файловых данных. Фактическое количество используемого пространства может измениться из-за различных накладных расходов. Но содержимое такое же, за исключением случаев, когда при передаче произошла какая-то ошибка.

Это должно быть верно независимо от того, копируете ли вы файл между устройствами или используете какой-либо инструмент для преобразования файловой системы на месте. Если файл не остался прежним, это потому, что что-то пошло не так.

Команда cmp может сравнивать два файла побайтно, чтобы проверить это. Вы также можете использовать программу подсчета контрольных сумм, например shasum , и сравнивать контрольные суммы. (Это не побайтно, но вероятность коллизии, когда два файла дают одинаковый результат, хотя они действительно разные, намного меньше , чем вероятность фактического сбоя оборудования, вызывающего cmp , чтобы дать неверный результат.)

8
27.01.2020, 21:11

Теги

Похожие вопросы