передача файла с помощью SCP

Файл может не иметь выделенных блоков; флаг -s на ls покажет это различие, в то время как для каталога будет выделено некоторое количество минимальных блоков, следовательно, размер по умолчанию. (Если только вы не используете какую-то модную современную файловую систему, которая выкидывает эти понятия из окна.) Например:

% mkdir testfoo
% cd testfoo/
% mkdir foodir
% touch foofile
% ln -s foofile foosln
% ls -ld foo*
drwxrwxr-x  2 jmates  jmates  512 Oct  5 19:48 foodir
-rw-rw-r--  1 jmates  jmates    0 Oct  5 19:48 foofile
lrwxrwxr-x  1 jmates  jmates    7 Oct  5 19:48 foosln -> foofile
% ls -lds foo*
8 drwxrwxr-x  2 jmates  jmates  512 Oct  5 19:48 foodir
0 -rw-rw-r--  1 jmates  jmates    0 Oct  5 19:48 foofile
0 lrwxrwxr-x  1 jmates  jmates    7 Oct  5 19:48 foosln -> foofile
% 

Обратите внимание, что символическая ссылка здесь не принимает блоков, несмотря на выделение семи байтов для деталей, необходимых для readlink (2) , как любопытно! В любом случае, давайте теперь добавим в foofile один или два байта:

% echo >> foofile a
% ls -lds foo*
8 drwxrwxr-x  2 jmates  jmates  512 Oct  5 19:48 foodir
8 -rw-rw-r--  1 jmates  jmates    2 Oct  5 19:49 foofile
0 lrwxrwxr-x  1 jmates  jmates    7 Oct  5 19:48 foosln -> foofile
%

И можно увидеть, что выделенные блоки для foofile переместились на 8 , несмотря на то, что только два байта (прикреплены a и новая строка echo ).

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

Кроме того, размер каталога можно увеличить, создать много файлов с очень длинными именами и проверить, что происходит с размером каталога (и с выделенными блоками) после создания каждого нового длинного имени файла с помощью ls -lds.

1
18.03.2018, 12:35
1 ответ

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

rsync --partial --progress --rsh=ssh local_file user@host:remote_file
0
28.01.2020, 00:38

Теги

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