์ด๊ฒ์ #226์ ํ์ ๋ฌธ์ ์ ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ฐฑ์ ๋ฐ ๋ณต์์ ๋ํ ์ ์ธ ํจํด๋ง ์ง์ ํ ์ ์์ต๋๋ค.
๋ค๋ฃจ์ง ์๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด: ์ฌ์ฉ์๋ C ์์ค ํ์ผ์ ์ ์ธํ๊ณ work
๋๋ ํ ๋ฆฌ์์ ๋ชจ๋ ๊ฒ์ ์ ์ธํ๊ณ /home/user
ํ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐฑ์
ํ๋ ค๊ณ ํฉ๋๋ค.
๋ด๊ฐ ์๊ฐํ์ง ๋ชปํ ๋ค๋ฅธ ์ฉ๋๊ฐ ์์ต๋๊น?
๊ตฌํ/์ฌ์ฉ์ ์ธํฐํ์ด์ค: ๊ณตํต ๋ชฉ๋ก์ ์ฑ์ฐ๋ --include
๋ฐ --exclude
ํจํด์ ๋ช
๋ น์ค์ ๋ชจ๋ ์ง์ ํ ์ ์์ต๋๋ค(์ฌ๊ธฐ์ ์์๋ ์ค์ํจ). ๊ฐ ๋๋ ํ ๋ฆฌ/ํ์ผ์ ๋ํด ๋ชฉ๋ก์ ๋ชจ๋ ํจํด์ ํ์ธํ์ญ์์ค. ๋ง์ง๋ง ์ผ์น ํจํด์ ์์
(์ ์ธ ๋๋ ํฌํจ)์ด ์น๋ฆฌํฉ๋๋ค. ๊ธฐ๋ณธ ์์
(ํฌํจ ๋๋ ์ ์ธ ํจํด์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ๋จ)์ "ํฌํจ"์
๋๋ค.
์ฌ๊ธฐ์๋ ์ด๋ฏธ ์ฝ๋ ์ผ์ด์ค๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. /home/user/work
๋ฅผ ๊ฑธ์ด์ผ ํ ๊น์?
๋๋ ๊ทธ๊ฒ์ด ์๋๋ค๊ณ ์๊ฐํ๋ค. ๋์ , ์ด๊ฒ์ด ๋ฐ๋์งํ ๋์์ด๋ผ๋ฉด ์ฌ์ฉ์๊ฐ ์ ์ธ๋ ๋๋ ํ ๋ฆฌ๋ ํจ๊ป ์ด๋ํด์ผ ํจ์ ์๋ฆฌ๋ ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ํจํด์ ์ถ๊ฐํ๋๋ก ์๊ตฌํฉ๋๋ค(์: restic backup --exclude /home/user/work --include /home/user/work/**/*c. /home/user
.
๋ ๋์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ํ์ผ์์ ํจํด์ ์ฝ์ ์ ์๋๋ก ์ง์ ํ๋ ๊ฒ์
๋๋ค( --pattern-file
๋๋ ์ด์ ์ ์ฌํ ๊ฒ). ์ด ํ์ผ์์ #
๋ก ์์ํ๋ ๋ชจ๋ ์ค์ ์ฃผ์์ด๊ณ ๋น ์ค์ ๋ฌด์๋๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ์ค์ ๊ณต๋ฐฑ ๋ค์์ +
(ํฌํจ) ๋๋ -
(์ ์ธ)๋ก ์์ํด์ผ ํฉ๋๋ค. ์บ๋ฆญํฐ์ ํจํด. ์์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ํํฐ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# filter out everything from work, but include c source code files
- /home/user/work
+ /home/user/work/**/*.c
์ด ๋ฌธ์ ๋ ํฌํจ ๋ฐ ์ ์ธ ํจํด์ ๋ชจ๋ ํฌํจํ๋ ์ต์ข ์๋ฃจ์ ์ด ๊ตฌํ๋๋ฉด ์ข ๋ฃ๋ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๊ฐ๋ฅ์ฑ์ ํ์ผ(๋๋ ํ์ค ์ ๋ ฅ)์์ ๋ฐฑ์ ํ ์ ํํ ํ์ผ ๋ชฉ๋ก์ ์ฝ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ๋๋ค์ ์ํ๋ ๋๊ตฌ(์ฐพ๊ธฐ, grep ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก์ ๋ง๋ค๊ณ ํด๋น ๋ชฉ๋ก์ ์ ํ์ ์ผ๋ก "ํ์ดํ"ํ ์ ์์ต๋๋ค.
๋ต๋ณ์ ๊ฒ์ํ๊ธฐ ์ ์ ์ ์ฒด ํ ์คํธ๋ฅผ ์ฝ์ด์ผ ํฉ๋๋ค. ์ฃ์กํฉ๋๋ค.
์ด๊ฒ์ ๋ช ๋ น์ค ์ธ์ ๋์ ํ์ค ์ ๋ ฅ์์ ๋ฐฑ์ ํ ํ์ผ/๋๋ ํ ๋ฆฌ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ฐ์ง ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๊น?
๋ ์์ ์ ์ํ ์๋ฆผ: ์ด ๋ฌธ์ ๋ ๋ฐฑ์ ์ฉ ํํฐ ํฌํจ์ ๊ดํ ๊ฒ์ ๋๋ค. ๋ณต์์๋ ์ด๋ฏธ ํํฐ๊ฐ ์์ต๋๋ค.
rsync์ --exclude/--include/--exclude-from ๊ตฌ๋ฌธ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค. ๊ทธ๋ค์ 20๋
์ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค :-)
(์ต์ํ "/foo"์ "foo"๊ฐ ๋์ผํ์ง ๋๋ "*.c"๊ฐ ์ง์๋๋์ง ์ฌ๋ถ๊ฐ ๋ถ๋ถ๋ช
ํ๋ฏ๋ก ์ฌ์ฉ์ ๊ฐ์ด๋์ ํ์ฌ ๊ตฌ๋ฌธ์ ๋ช ๊ฐ์ง ์๋ฅผ ์ถ๊ฐํ์ญ์์ค.
์, ๋๊ธ ๊ฐ์ฌํฉ๋๋ค. ๋งค๋ด์ผ์ ๋๋ฝ๋ ์์ ์ ๋ํ ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค: https://github.com/restic/restic/issues/396
์์งํ ๋งํด์, ๊ท์น์ด ๋๋ฌด ๋ณต์กํ๊ธฐ ๋๋ฌธ์ rsync์ ํํฐ ๊ตฌ๋ฌธ์ด ์ ํ ๋ง์์ ๋ค์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ฌด์์ ์๊ฐํด๋ผ ์ ์๋์ง ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ๋ฐ๋์ ํ์ํ ์ต์ ์ ๋๋ค. ํ์ฌ ํ์ค ์ ๋ ฅ์์ ๋ฐฑ์ ํ ํ์ผ ๋ชฉ๋ก์ ์ฝ๋ ๊ฒ์กฐ์ฐจ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
$ find -name '*.go' | restic backup --files-from -
open -: no such file or directory
๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์์ง๋ง
restic backup --exclude '*' --include '*.go'
์, stdin์์ ํ์ผ ๋ชฉ๋ก์ ์ฝ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด restic์ ํธ์ถํ์ฌ ์ป์ ์ ์์ต๋๋ค.
$ find -name '*.go' | restic backup --files-from /dev/stdin
์ํ์ ๋ค๋ฉด --files-from
-
์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ PR์ ์๋ฝํ๊ฒ ์ต๋๋ค. :)
@opennota ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ทธ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค.
๋์( -
) ๋ฌธ์ ๋ #769๋ก ์ถ์ ๋ฉ๋๋ค.
@fd0
์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ง์ง ์์ต๋๋ค. ๋ชฉ๋ก์ ์์ ํ์ผ์ ์ฌ์ฉํ์ง ์๊ณ ํน์ ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ๋ง ๋ฐฑ์
ํ๊ณ ์ถ์ต๋๋ค.
์ํ๋ค๋ฉด --files-from์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ PR์ ์๋ฝํ๊ฒ ์ต๋๋ค. :)
๋ด๊ฐ ๋ฌด์์ ํ ์ ์๋์ง ์์๋ณผ ๊ฒ.
sed
๋ฐ ๋ช
๋ช
๋ ํ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋์์ ์๋ฎฌ๋ ์ดํธํ ์ ์์ต๋๋ค.
restic --exclude-file <(sed -n 's/^- \(.*\)/\1/p' files.list) --files-from <(sed -n 's/^+ \(.*\)/\1/p' files.list)
-
๋ก ์์ํ๋ ํ์ ์ ์ธ๋๊ณ +
์ ํฌํจ๋ฉ๋๋ค.
์ข์ ๋ชจ๋ธ์ borg๊ฐ ์ต๊ทผ --pattern ๋ฐ --patterns-from์ ๋ํด ๊ตฌํํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://borgbackup.readthedocs.io/en/stable/usage/help.html#borg -help-patterns
๋ค์ํ ์คํ์ผ ์ ํ๊ธฐ๊ฐ ์๋๋ผ ํ์ผ์ ๋ฃจํธ ๊ฒฝ๋ก, ํฌํจ ๊ท์น, ์ ์ธ ๊ท์น ๋ฐ ์ฌ๊ท ์๋ ์ ์ธ ๊ท์น์ ์ง์ ํ๋ ์ต์
์ด ์์ต๋๋ค.
.gitignore
์ฌ์ฉํ๋ ํ์ค ๋ฌด์ ํ์์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์๋ฅผ ๋ค์ด
# ignore everything
*
# include $HOME/.local
!$HOME/.local
--include๊ฐ ๊ตฌํ๋ ์์ ์ ๋๊น?
--include ๋ฐ --exclude์ ๊ฐ์ ์๋ฆฌ๋ ํจ๊ป ๊ตฌํํ ์ ์๊ฑฐ๋ ์ ์ด๋ ํ๋์ ์ฐ์ ์์ ๊ณ์ธต์ด ๋ ๊ฒ์ ๋๋ค...
--files-from
์ ํจ๊ป ํ์ผ ๋ชฉ๋ก์ ์ ๊ณตํ๋ฉด snapshots
ํ์ ๋ช
๋ น์ด ํ์ผ์ ๊ฑฐ๋ํ ๋ชฉ๋ก์ ํ์ํ๊ณ forget
ํ์ ๋ช
๋ น์ด ์์๋๋ก ์๋ํ์ง ์์ผ๋ฏ๋ก ๋ฌธ์ ๊ฐ ์์ ํ ํด๊ฒฐ๋์ง ์์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ด ์ง์ ๋ฐฑ์
ํ๋ ๊ฒ์ด๋ฉฐ ์ผ๋ถ ์ ์ธ ๋ฐ ์ ์ธ์ ๋ํ ์ผ๋ถ ์์ธ๊ฐ ์๋ ๊ฒฝ๋ก ๋ชฉ๋ก์ด ์์ต๋๋ค. ๊ฒฝ๋ก์ ๊ธฐ๋ณธ ๋ชฉ๋ก์๋ ์ด๋ฏธ 100๊ฐ์ ํญ๋ชฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด $HOME
์๋์ ์์ผ๋ฏ๋ก --exclude=** --include=~/path1 --include=~/path2 --exclude=~/path2/something --exclude=*~
์ ๊ฐ์ด ๋งํ ์ ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ฒฝ๋ก๋ฅผ ํฌํจํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ค๋ฉด ๊ฐ --exclude
๋ฐ --include
์ ๋ํด ์ฌ๋ฐ๋ฅธ ์์๋ก ์ผ์นํด์ผ ํ๋ฉฐ ๋ง์ง๋ง ์ผ์น๊ฐ ์น๋ฆฌํฉ๋๋ค.
@vincentbernat ์ PR ์ด ์ด ์๊ตฌ ์ฌํญ์ ๋ํ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
_์์ฝ: gitignore ์คํ์ผ์ ๋ถ์ ํจํด์ด ๋ฐฑ์ ๋ฐ ๋ณต์ ๋ชจ๋์ ๋ํ ์ ์ธ ๊ท์น์ ์ง์ ํ๋๋ก ํ์ฉํฉ๋๋ค._
๋๋ ์ง๊ธ ๋ช ์ฃผ ๋์ ๊ทธ๊ฒ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํนํ, ์ด์ ์๋ ๋งค์ฐ ์ฅํฉํ๋ ์ค๋ ์ท ๋ชฉ๋ก์ ๋จ์ํํ ์ ์์ต๋๋ค.
b951f6a2 2019-06-15 11:30:18 elvandar manual /Users/daniel/Desktop
/Users/daniel/Documents
<lots more...>
์๊ฒ:
d0c0bed1 2019-06-18 08:20:57 elvandar /Users/daniel
๋ํ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ง์์ ์ธ ๋ฐฑ์ ์ ์ ๊ณตํ๋ ํจ๊ณผ์ ์ธ(์๋ฒฝํ์ง๋ ์์ง๋ง ์๋ํ๋) ์๋ฃจ์ ์ ๊ตฌํํ์ต๋๋ค(์์ธํ ๋ด์ฉ์ ๊ณง ๊ณต์ ์์ ).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
.gitignore
์ฌ์ฉํ๋ ํ์ค ๋ฌด์ ํ์์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์๋ฅผ ๋ค์ด