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

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

Так что я могу сделать, это rsync этот каталог на тот же старый путь. Но имя каталога также изменилось.

Есть ли простой способ, которым я могу rsync каталог в целевой каталог с другим именем?

32 голоса | спросил Zen 8 Jam1000000amThu, 08 Jan 2015 07:22:06 +030015 2015, 07:22:06

3 ответа


55

Если вы хотите использовать rsync, чтобы рекурсивно сделать dest точная копия каталога src:

rsync -a src/ dest

Справочная страница rsync объясняет, как это работает:

  

Конечная косая черта в исходном [...] избегает [s] создания дополнительного уровня каталога в пункте назначения. Вы можете вспомнить конечный / в источнике, что означает «скопировать содержимое этой директории», а не «скопировать каталог по имени "[...]

ответил Adrian 8 Jam1000000amThu, 08 Jan 2015 11:02:48 +030015 2015, 11:02:48
0

Теперь я нахожу альтернативное решение.

Использование rysnc -r /origin/* /target/ может синхронизировать все содержимое из исходного каталога в целевой каталог.

ответил Zen 8 Jam1000000amThu, 08 Jan 2015 07:28:32 +030015 2015, 07:28:32
0

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

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

Предположим, у вас был старый git в каталоге /old /path /old_git, и теперь репозиторий кода переместился в /new /path /new_git

Вы можете сделать:

cd /old/path
rm -rf old_git     (if you still have it there, get rid of it, or move it out of the way)  
ln -s /new/path/new_git old_git

Это создаст ссылку как таковую:

/old /path /old_git -> /Новый /путь /new_git

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

ответил jrel 8 Jpm1000000pmThu, 08 Jan 2015 17:09:56 +030015 2015, 17:09:56

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132