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

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

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

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

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

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

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

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

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

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

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

2 ответа

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

sudo apt-get install curlftpfs

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

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

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

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

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

И установите fs через:

curlftpfs -v ftp-server.com/path/ /mnt/
2
ответ дан 24 May 2018 в 16:46
  • 1
    круто, не знал об этом. Это может быть полезно, но в этом случае "поиск и замена" будет навсегда. В каталоге содержится более 9 тыс. Элементов. (Было заменено около 1k файлов) – Dan 16 October 2013 в 17:14
  • 2
    Это много, посмотрите на мой другой ответ. – chaos 16 October 2013 в 17:52

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

Я сохранил список файлов в файле 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

1
ответ дан 24 May 2018 в 16:46

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

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