8

Я хочу скопировать текущий каталог в мой каталог резервного копирования:

Я попробовал эту команду rsync -a . ~/backup/ но он просто копирует содержимое текущего каталога вместо создания нового каталога в месте назначения.

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

Я хочу, чтобы rsync создал новый каталог по пути назначения с именем, совпадающим с текущим каталогом. Как мне этого добиться?

2 ответа2

4

Мне нравится ваш скрипт, но при необходимости вы можете сделать это с помощью командной строки прямо из текущего каталога:

rsync -a "$PWD" ~/backup/

или таким же образом, как ваш сценарий подход с

rsync -a "$(pwd -P)" ~/backup/

Заметки:

  • Нужно заключить в кавычки текущий каталог, если в пути присутствует, например, один или несколько пробелов.

  • В случае символических ссылок в пути можно получить физический путь, избегая всех символических ссылок, указывающих параметр -P в вызове команды pwd ($(pwd -P)), или вызывая исполняемый файл с полным путем ($(/bin/pwd)).
    Действительно, существует встроенный pwd который по умолчанию показывает путь с символической ссылкой , и исполняемый файл /bin/pwd который по умолчанию показывает физический путь.

  • Обе команды ссылаются на переменную $PWD которая содержит текущий рабочий каталог, когда их запрашивают версию пути с возможными символическими ссылками: поэтому, если вам строго не нужен физический путь, вы можете избежать вызова подоболочки и использовать непосредственно переменная $PWD .

    rsync -a "$PWD" ~/backup/
    
2

Нашел решение:

Создан новый скрипт оболочки, подобный этому:

current_dir=`pwd`
dir_name=`basename $current_dir`
rsync -a . ~/backup/$dir_name

и при выполнении этого он создаст новый каталог в месте назначения и скопирует содержимое текущей папки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .