Я хочу скопировать n изображений с моего сервера на локальный компьютер, я пробовал команду:
rsync -P <Source>(.om[1,100]) <localmachine>
но использование этого не работает
rsync не имеет возможности перечислить и ограничить файлы на удаленном сервере. Поэтому вам нужно заранее составить список файлов. Вы можете сделать это, например, используя find
и head
:
find /path/to/dir -type f |head -n 100'
вернет первые 100 найденных файлов.
rsync
имеет параметр --files-from
, который позволяет читать список файлов для копирования из файла. Он даже может прочитать этот список с удаленного сервера. Итак, вы можете записать этот список файлов в файл и передать его rsync.
Но на самом деле все это можно сделать с помощью одной команды:
ssh source 'find /path/to/dir -type f |head -n 100' | rsync --files-from - source:/ /path/to/local/dir
Это подключит ssh к серверу source
и верните первые 100 файлов из результатов поиска. Этот результат затем передается в rsync. С помощью -
как значение параметра --files-from
сообщает rsync читать этот «файл» из стандартного ввода, а не из реального файла. Затем вы, как обычно, указываете источник и цель.
Вы можете просто поместить файлы в каталог и загрузить весь каталог. Если вы не хотите этого делать, попробуйте эту команду:
rsync -P user@server:'/path/imagefilename.om{1..100}' destination-dir/
я просто хочу передать 100 файлов
Чтобы передать 100 файлов, не являющихся последовательностью, вы можете использовать это:
rsync -P `ls source-dir/ -U | head -100` destination-dir/
Нет опции rsync (которую я могу найти), которая просто передает 100 и останавливается
Вместо этого вам нужно найти способ выбрать 100 файлов для передачи в rsync в виде списка
Если исходная папка удаленная, возможно, вам придется смонтировать ее (возможно, auto-fs)
rsync -P `ls /mnt/source-dir/ -U | head -100` destination-dir/