Одна папка с двумя разными папками в Ubuntu 18.04


10

Я хочу, чтобы одна и та же папка находилась в двух разных местах в моей Ubuntu. Если я обновляю что-то в одном, оно также должно обновляться в другом месте.

Как я могу сделать это?


8
эти 2 места должны быть физическими (как в 2х, занимающих место) или они могут быть ссылками?
Rinzwind

19
A symbolic linkявляется самым простым решением для ваших требований и не зависит от привилегий суперпользователя. man lnЧтобы получить больше информации.
Doneal24

Ответы:


16

Используйте крепления для крепления .

Предположим, у вас есть существующий каталог, /home/pandey/originalи вы хотите отразить его /home/pandey/mirrorтак, чтобы все, что вы делаете в одном из них, автоматически делалось и в другом.

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

  1. Создайте (как ваш пользователь) новый каталог /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount исходный каталог к ​​вновь созданному пути. Это требует root-доступа:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Наслаждаться.

Чтобы отменить это, просто

sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror

См. Также этот вопрос и его выдающийся ответ на вопросы о возврате стека о bind- mounts .


3
+1, наверняка этот путь быстрее, чем я предложил;
Codito ergo sum

13
Будет ли cd /home/pandey; ln -s original mirrorиметь такой же эффект и не требовать права sudo?
Doneal24

19
Да, мне интересно, почему люди предлагают эти обходные решения, в то время как это звучит как классический вариант использования простой символической ссылки. В чем преимущество? Насколько я вижу, ни одно из преимуществ, перечисленных в указанном вопросе, похоже, не применимо здесь.
Во

5
@ doneal24 Я согласен: символическое связывание имеет тот же эффект с практической точки зрения и не требует фундаментальных системных изменений и прав администратора.
ванадий

2
В связанном вопросе о bind mounts есть хороший список возможных вариантов использования. Просто нужен другой именованный путь к каталогу - не один из них.
Dubu

44

Как указано в комментариях, но не как правильный ответ:

Во многих случаях символическая ссылка является самым простым решением.

Вы можете легко создать их в командной строке (используя lnкоманду с -sпараметром). Вы также можете легко создавать их с помощью графического интерфейса: большинство файловых браузеров (nautilus, ...) позволяют создавать символические ссылки с помощью перетаскивания (как для перемещения файла), удерживая нажатой клавишу-модификатор (CTRL + SHIFT).

Пример использования командной строки:

$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls 
first_dir  second_dir

$ touch ./first_dir/test_1
$ touch ./second_dir/test_2

$ ls ./first_dir 
test_1  test_2

$ ls ./second_dir
test_1  test_2

2

Вы можете сделать это, установив задание crontab:

  • Откройте свой терминал и введите crontab -e
  • Нажмите i, чтобы активировать режим вставки вашего редактора vim.

Вы можете ввести команду, которую вы хотите сделать там, чтобы вы могли скопировать все файлы папки в другую папку. Например, если вы хотите скопировать все файлы , /home/user/folder_nameчтобы /home/user/publicвы должны вставить эту команду в вашем crontabфайле:

rsync /home/user/folder_name -r /home/user/public

Это скопирует все файлы в нужный интервал. Если вы хотите копировать все файлы в 21:30 каждый день, ваши изменения должны быть:

 30 21 * * *  rsync /home/user/folder_name -r /home/user/public

Для получения дополнительной информации о crontab смотрите здесь или используйте man crontab.


Я бы, вероятно, использовал bind mounts в качестве @PerlDuck, поскольку это простой и понятный способ сделать это. Я бы не стал использовать cronjobs, поскольку это может привести к всевозможным проблемам с производительностью на вашем компьютере, если вы в итоге синхронизируете папку в нескольких местах, а файлы в первой папке очень большие или многочисленные. Моя компания использует этот подход для эмуляции поведения Dropbox / Drive, и теперь, когда мы достигли большого количества файлов, некоторые из которых имеют размер в ГБ, решение просто больше не масштабируется.
nonameable

2
Это две директории, а не одна.
ярость
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.