Как автоматически заархивировать каталог?

47

Я хочу сделать одностороннюю синхронизацию.

У меня есть Folder Aна моем компьютере, который постоянно обновляется с контентом.
Другой Folder Bиспользуется для резервного копирования, который находится на внешнем жестком диске.

Теперь я ожидаю, что все, что присутствует в папке A, должно идти в папку B. Однако то, что присутствует в B, а НЕ в A "", НЕ будет скопировано в A "".

Короче говоря, папка резервной копии может копировать все из исходной папки, однако ничто не должно копироваться из папки резервной копии в исходную.

Бхавеш Диван
источник
Это не синхронизация ....
Брайам
@Braiam, как это тогда называется? Я не мог придумать слово сам, как ОП. Если знаешь, расскажи пожалуйста.
Джо Смо
@JoSmo скопировать? Архив? Резервный?
Брайам
@Braiam спасибо, теперь я чувствую себя глупо, спрашивая. : D
Джо Смо

Ответы:

63

Похоже, идеальная задача для rsync

sudo rsync -az /path_to/A /path_to/B

-Архивный режим (подразумевает рекурсивное копирование символических ссылок в виде символических ссылок, сохранение владельца, времени модификации, группы, владельца, специальных файлов и файлов устройств)

-z сжимает данные

Если вы хотите удалить файлы, удаленные в A, из файлов в B, используйте --deleteопцию

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

https://help.ubuntu.com/community/rsync

Вы можете запустить rsync из cron

sudo crontab -e

Добавьте в почасовое задание

@hourly rsync /path_to/A /path_to/B

https://help.ubuntu.com/community/CronHowto

пантера
источник
7
Если в папках есть папки, вам нужно использовать опцию -r.
Джон С. Грубер
2
Я немного опаздываю на вечеринку, но чтобы запустить скрипт синхронизации при подключенном жестком диске, вы должны использовать udev. Проверьте этот вопрос некоторое время назад. askubuntu.com/questions/25071/…
jackweirdy
1
@JohnSGruber Опция -a подразумевает рекурсивный, я отредактирую ответ, чтобы указать на это
Томас
1
если файлы находятся на одной и той же машине, -zпросто замедлите процесс
Постадельмага
1
@JoSmo - askubuntu.com/questions/476041/… и askubuntu.com/questions/609968/… и man rsync и, если необходимо, задайте новый вопрос, а не спрашивайте в комментариях.
Пантера
15

Я бы предложил использовать для этой цели rsync. Rsync чрезвычайно быстр, стабилен и универсален. Хорошее введение можно найти по адресу http://help.ubuntu.com/community/rsync.

Если вы хотите, есть дополнительный графический интерфейс: grsync

 sudo rsync -azv --exclude 'dir1' /home/path/folderA/ /home/path/folderB

Команда выше скопирует из папки A в папку B, исключая dir1. Флаги

-a preserves time stamps
-z is to enable compression
-v verbose

Есть много других доступных вариантов.

Джим
источник
8

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

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

В любом случае, приятно то, что с помощью этого учебника достаточно просто настроить его один раз, а после этого - интерфейс GUI, когда вы захотите это сделать.

Вот некоторая информация об этом: http://www.ubuntugeek.com/unison-file-synchronization-tool.html

А вот учебник: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#tutorial

Доктор ксориле
источник
4
rsync -avPr --ignore-existing /home/username/Research/ /path/to/other/folder/on/hdd/

Это будет синхронизировать и копировать только те данные, которые не существуют в /other/folder/on/hdd/

dearN
источник
2

Я согласен с другими ответами, вы можете использовать в rsync в терминале или интерфейсах Grsync , luckyBackup , Conduit или знаменитый Unison .

Еще одно отличное приложение - Krusader ( двухпанельный файловый менеджер для KDE), в меню «Инструменты» которого вы можете найти «Синхронизировать каталоги», очень полезно.

В последнем случае вы можете установить Wine и установить другой замечательный файловый менеджер с двумя панелями, такой как Total Commander .

В любом случае у вас есть много вариантов, и все они присутствуют в программном центре Ubuntu.

Рауль Ф. Кастро С.
источник
1

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

jasonwert
источник
0

Существует очень удобный инструмент оболочки под названием rsnapshot - http://www.rsnapshot.org/ - утилита моментальных снимков файловой системы для создания резервных копий локальных и удаленных систем. он использует rsync и жесткие ссылки, что позволяет мгновенно сохранять несколько полных резервных копий файловой системы. Просто сделай sudo apt-get install rsnapshotи проверьinfo rsnapshot

user1180249
источник
0

Вы можете синхронизировать файлы внутри двух директорий:

rsync -rv /path/to/directory1/ /path/to/directory2

Делать rsync -rv /path/to/directory1 /path/to/directory2создаст directory1внутри directory2, как это/path/to/directory2/directory1/[files]

Вы можете пробежать с помощью -nпереключателя, вот такrsync -rnv /path/to/directory1/ /path/to/directory2

Ссылка: https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps

subhojit777
источник
0

Если вам нужен графический интерфейс в системе с широкими возможностями настройки, попробуйте FreeFileSync. См., Например: http://linuxnorth.wordpress.com/2011/11/29/file-and-folder-synchronization/ В частности, вы хотите параметр «Обновить» для синхронизации, который будет «Копировать новые или обновленные файлы в правая папка », т.е. копирование из левой папки в правую папку на двухоконный экран.

CentaurusA
источник