Как может найти поддержку большими файлами?

Различный 1:

Во-первых, запустите ssh на хосте постоянно с локальным перенаправлением портов в другом терминале. Например:

ssh -N -v -L 22022:hostB:22 hostA

Затем "канал" rsync с ssh к localhost:22022. Один вариант должен записать в ~/.ssh/config:

Host hostB
HostName localhost
Port 22022

Различные 2:

Замена -e ssh с -e к некоторому сценарию, который содержит:

ssh hostA 'ssh hostB' "$@"

Я не попробовал его, таким образом, некоторые детали будут разработаны дополнительно.

1
04.06.2013, 00:58
2 ответа

Я думаю, что эта ссылка могла бы разрешить вещи, Выпуск 7 Спецификаций Основы Open Group, Станд. IEEE 1003.1, 2013 Выпуск. Вот является выборка формы раздела спецификацией для находки:

выборка от спецификации находки

- операнд размера относится к размеру файла, а не количеству блоков, которые это может занять в файловой системе. Намерение состоит в том, что st_size поле, определенное в Системном объеме Интерфейсов POSIX.1-2008, должно использоваться, не st_blocks, найденный в исторических реализациях. Существует по крайней мере две причины этого:

И в System V и в BSD, найдите только использование st_size в вычислениях размера для операндов указанным этим объемом POSIX.1-2008. (BSD использует st_blocks только при обработке-ls основного устройства.)

Пользователи обычно думают о размере файла с точки зрения байтов, который является также единицей, используемой ls утилитой для вывода от-l опции. (И в System V и в BSD, ls использует st_size для-l поля размера опции и использует st_blocks для ls-s вычисления. Этот объем POSIX.1-2008 не указывает ls-s.)

Если я понимаю этот раздел правильно, первый раздел говорит все это "-операнд размера относится к размеру файла". Таким образом, размер - то, о чем сообщают при оценке st_size НЕ st_blocks.

Примеры

Таким образом, необходимо смочь использовать команды как:

# find files over 1G in size
$ find / -type f -size +1G

# find files smaller than 1G in size
$ find / -type f -not -size +1G

Ссылки

1
27.01.2020, 23:39
  • 1
    для меньшего файла можно также использовать find / -type f -size -1G. –  rush 04.06.2013, 06:57

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

Размер файла является числом байтов, которые можно считать из него. Файл размера N является массивом байтов N.

Когда Вы передаете единицу кроме байтов (c) к -size, find управляйте округляет размер файла до нескольких из единицы. Например, -size 11k файлы соответствий 10 240 - 11 263 байтов; -size 12345M файлы машин 12 943 622 145 - 12 944 670 720 байтов. Единицу по умолчанию, по историческим причинам, называют блоками, и ее значение составляет 512 байтов.

Это было легкой частью. Теперь в типичных файловых системах, данные файла хранятся в блоках. Для файловой системы, размер блока которой составляет 512 байтов ¹, 5 123-байтовый файл занял бы 11 блоков данных (последний только частично используемый). Так find -size 11 обычно файлы соответствий, которые состоят из 11 блоков.

На самом деле существуют возможные сложности. ОС должна иметь место, где сохранить местоположение всех блоков, которые составляют файл. Если существует слишком много блоков, это должно выделить еще некоторые блоки только для содержания адресов других блоков. Такие блоки называют косвенными блоками. find руководство говорит Вам, что эти блоки не приняты во внимание — который неудивителен с тех пор find не считает блоки, это смотрит на размер файла.

С другой стороны возможно иметь файл, который использует меньше блоков, чем Вы ожидали бы от его размера из-за сжатия. Классические файловые системы Unix только реализуют сырую форму сжатия: могут быть опущены блоки, которые состоят исключительно из пустых байтов. Это известно как редкие файлы.

Программа может знать, сколько блоков было выделено файлу; это st_blocks поле stat структура, в противоположность st_size. GNU находит только использование этим в его коде дисплея для -ls и -printf, никогда для любого предиката. st_blocks значение дает сырой признак того, сколько места файл занимает на диске, который может быть меньше, чем размер файла, если файл редок, но это не принимает косвенные блоки во внимание.

v Ext2, ext3 и ext4 имеет блоки 1 КБ, 2 КБ или 4 КБ.

1
27.01.2020, 23:39

Теги

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