
Я делаю перенос данных, старая файловая система глубоко зависит от каталога, который теперь находится по другому пути. Это каталог 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/
можно синхронизировать все содержимое из исходного каталога в целевой каталог.