Как переместить определенные файлы при сохранении их структуры каталогов

У меня есть большой каталог с множеством файлов и каталогов в удаленной системе Windows, где у меня есть только доступ по FTP.

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

Используя Git локально, я смог получить список измененных файлов. (Это не Git в системе Windows, поэтому я не могу нажать / вытащить. Кроме того, у меня есть только FTP-доступ.)

Теперь мне нужно обновить файлы в системе Windows. Загрузка файла за файлом вручную может быть неприятной, так как есть много измененных файлов.
Некоторые файлы находятся в подкаталогах и подкаталогах.

Например, эта структура (Есть намного больше файлов):

./
 |--- file1
 |--- file2
 |--- dir1
 |     |--- file1.1
 |     |--- dir1.1
 |           |---- file1.1.1
 |--- dir2
       |--- file2.1
       |--- file2.2
       |--- file2.3

Как я могу скопировать их (или даже переместить их нормально) в новое место, сохранив при этом их структуру каталогов. [ 114]
Таким образом, в моем FTP-клиенте я бы просто переместил всю папку. Он будет управлять структурой каталогов самостоятельно.

Имейте в виду, что в подкаталогах есть другие неизмененные файлы, которые я не хочу копировать.

Git дал мне этот список, так что он сделал половину работы:

file1
file2
dir1/file1.1
dir1/dir1.1/file1.1.1
dir2/file2.1
dir2/file2.2
dir2/file2.3
3
задан 13 April 2017 в 15:25

3 ответа

Почему Вы не используете curlftpfs? Я думаю, что это было бы более просто что загрузка и загрузка целой структуры каталогов.

sudo apt-get install curlftpfs

Смонтируйте удаленную файловую систему ftp:

curlftpfs -v user:password@ftp-server.com/path/ /mnt/

Затем отредактируйте или измените то, что Вы имеете к и размонтировали фс. Но заметьте, файловая система является очень медленной.

Править: Если Ваш пароль имеет специальные символы как, используют названный файл ~/.netrc со следующим форматом:

machine ftp-server.com
login user
password p@ssword

И смонтируйте фс через:

curlftpfs -v ftp-server.com/path/ /mnt/
2
ответ дан 13 April 2017 в 15:25

Интересная проблема. Я искал немного, так что вот другой подход. Когда у вас есть список файлов и очень много файлов для загрузки. Используйте wput.

apt-get install wput

cat /you/large/file/list | wput ftp:/host/ -i -

Я бы порекомендовал включить подробный вывод с помощью -v

Со страницы man:

-i file
       --input-file=file
           Reads URLs and filenames from file. ...

Вы также можете использовать find для передачи имен файлов в wput .

find | wput ftp://host/ -i -

Но позаботьтесь о экранированных символах в вашем списке.

0
ответ дан 13 April 2017 в 15:25
  • 1
    таким образом, как это используется для решения проблемы? – Mateo 2 March 2015 в 03:59
  • 2
    таким образом, как это используется для решения проблемы? – Mateo 2 March 2015 в 03:59
  • 3
    таким образом, как это используется для решения проблемы? – Mateo 2 March 2015 в 03:59
  • 4
    таким образом, как это используется для решения проблемы? – Mateo 2 March 2015 в 03:59
  • 5
    таким образом, как это используется для решения проблемы? – Mateo 2 March 2015 в 03:59

Это то, что я в итоге сделал, хотя, если есть лучший способ, пожалуйста, добавьте в качестве ответа:

Я сохранил список файлов в файле foo.log

и запустил следующая команда:

tar -zcf bar.tar.gz --files-from foo.log

При архивировании с помощью tar структура каталога остается неизменной при добавлении файлов.

Затем я разархивировал файл bar.tar.gz в пустой каталог:

mkdir tempdir
tar -zcf bar.tar.gz -C tempdir
# Delete the archive
rm bar.tar.gz

Теперь все мои измененные файлы скопированы в tempdir

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

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