Назад | Перейти на главную страницу

Как скопировать N изображений с сервера на локальный компьютер с помощью rsync?

Я хочу скопировать 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/