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

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

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

решение1

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

rsync -a src/ dest

На странице руководства rsyncобъясняется, как это работает:

Завершающий слеш в источнике [...] избегает создания дополнительного уровня каталога в месте назначения. Вы можете думать о завершающем слеше /в источнике как означающем «скопировать содержимое этого каталога» в отличие от «копировать каталог по имени» [...]

решение2

решение3

Если старая и новая файловые системы доступны для вашего компьютера, то рассмотрите возможность использования символической ссылки вместо 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

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

/старый/путь/старый_git -> /новый/путь/новый_git

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

решение4

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

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

Связанный контент