Какие флаги использовать с rsync, чтобы удалить файл /dest/foo и заменить его каталогом /src/foo?

Как отметили комментаторы, некоторые вещи в ваших стартовых файлах bash (~/.bashrc,~/.bash_profile)могут вызвать мгновенный выход из вашей оболочки, что может привести к мгновенному закрытию эмулятора терминала.

Это работает правильно на другом аккаунте без .bashrcпредполагает, что что-то в вашем .bashrcвызывает это.

В этом случае переименование файла .bashrcдолжно позволить вам открыть эмулятор терминала. Затем вы можете попытаться изолировать ошибку, удалив части вашего .bashrcдо тех пор, пока он не запустится нормально, или вы можете попробовать использовать shellcheck .

-1
28.12.2019, 10:11
1 ответ

У вас есть

$ tree -F
.
|-- dest/
|   `-- foo
`-- src/
    `-- foo/

3 directories, 1 file

Выполнение rsync -r src/foo destзаменит файл dest/fooкаталогомsrc/foo:

$ rsync -r src/foo dest
$ tree -F
.
|-- dest/
|   `-- foo/
`-- src/
    `-- foo/

4 directories, 0 file

Однако чаще всего вы захотите использовать опцию -a(--archive), которая подразумевает -r(--recursive), а также сохраняет метаданные -.


Обратное работает аналогичным образом:

$ tree -F
.
|-- dest/
|   `-- foo/
`-- src/
    `-- foo

3 directories, 1 file

Команда такая же, хотя -rздесь на самом деле не нужна (вы не можете вернуться в файл):

$ rsync -r src/foo dest
$ tree -F
.
|-- dest/
|   `-- foo
`-- src/
    `-- foo

2 directories, 2 files
0
28.01.2020, 05:11

Теги

Похожие вопросы