μ μΈ νμΌ κ΅¬λ¬Έμ΄ κ΅¬λ¬Έ λΆμλλ λ°©λ²μ λν λ¬Έμλ₯Ό μ°Ύμ μ μλ κ² κ°μ΅λλ€.
μ¦, μμΌλμΉ΄λλ₯Ό μ§μν©λκΉ? μ κ·μ? νμΌκ³Ό λλ ν 리λ₯Ό μ΄λ»κ² ꡬλ³ν©λκΉ? κ²½λ‘ μ λμ¬κ° νμν©λκΉ? μ΄λμμ (cwd/λλ 루νΈ?)?
λͺ κ°μ§ μ:
.qiv-trash (directory that could be anywhere on the filesystem)
.DS_Store
lost+found/
._*
desktop.ini
Thumbs.db (file that could be anywhere on the filesystem)
.Trash-* (the asterisk could be any number, is it needed?)
.tmp$ (file ending in .tmp)
~$ (file ending in a tilde)
~/.cache/ (cache directory in user home dir, using tilde syntax)
/full/path/to/directory/.syncthing/index*
μλ , λ΄€μ΄?
ν¨ν΄μ λ΄λΆμ μΌλ‘ filepath.Globμ μ¬μ©ν©λλ€. ꡬ문μ filepath.Matchλ₯Ό μ°Έμ‘°νμΈμ. λν **λ μμμ νμ λλ ν°λ¦¬λ₯Ό μ μΈν©λλ€. μ μΈ νμΌμ νκ²½ λ³μλ os.ExpandEnvλ‘ νμ₯λ©λλ€.
https://github.com/restic/restic/blob/master/doc/manual.rst?
λλ μ΄κ²μ΄ λΉμ μ μ§λ¬Έμ λ΅ν΄μΌ νλ€κ³ μκ°ν©λλ€.
https://restic.readthedocs.io/en/latest/manual.html μ λ¬Έμλ‘
λλ golang λ¬Έμλ₯Ό μ½μκ³ μ΅μ’ μ¬μ©μ(λ!)λ λ΄λΆμ μΌλ‘ μ μΈ λμμ λΉκ΅νλ κ²μ΄ 무μμΈμ§ μμ§ λͺ»ν κ²μ΄λΌκ³ μκ°ν©λλ€. μ 체 κ²½λ‘(μ: /home/me/blah) λλ μ μ₯μ 루νΈ(/blah λλ blah), λλ cwdμ λν μλ(/homeμ μμ λ me/blah)?
μ΄ λ¬Έμ λ₯Ό μ κΈ°ν΄ μ£Όμ μ κ°μ¬ν©λλ€. νλΉν μ§μ μ΄ μλ€κ³ μκ°ν©λλ€. 맀λ΄μΌμ godoc.orgλ₯Ό μ°Έμ‘°νμ§ μκ³ μ μΈ νν°λ₯Ό μ€λͺ ν΄μΌ νλ©° λ λ§μ μμ κ° νμν©λλ€.
μ΄λ―Έ λͺ κ°μ§ μ§λ¬Έμ λ΅νλ €λ©΄:
--exclude foo
λ foo
λΌλ νμΌκ³Ό λλ ν 리λ₯Ό μ μΈν©λλ€. --exclude foo/
λ§μ°¬κ°μ§μ
λλ€.μ μΈ νμΌμμ:
._*
λ μ΄λ¦μ΄ μ κ³Ό λ°μ€λ‘ μμνλ λͺ¨λ νμΌ λ° λλ ν 리μ μΌμΉν©λλ€.desktop.ini
λ desktop.ini
λΌλ λͺ¨λ νμΌκ³Ό μ νν μΌμΉν©λλ€. λ°λΌμ desktop.ini.bak
λ μ μΈλμ§ μκ³ μ€λ
μ·μ μ μ₯λ©λλ€..Trash-*
λ .Trash-
, .Trash-foobar
λ±μ νμΌ/λλ ν 리λ₯Ό μ μΈν©λλ€..tmp$
λ¬Έμ κ·Έλλ‘ .tmp$
λΌλ μ΄λ¦μ λͺ¨λ νμΌ/λλ ν 리λ₯Ό μ μΈν©λλ€. μ¦, μ , tmp
λ€μμ λ¬λ¬ κΈ°νΈκ° μ΅λλ€. μ κ· ννμ νμ₯μ΄ μμ΅λλ€.~$
λ§ κ·Έλλ‘ λ¬Όκ²° λ¬λ¬λΌλ μ΄λ¦μ λͺ¨λ νμΌ/λλ ν 리λ₯Ό μ μΈν©λλ€. λ¬Όκ²°νλ‘ λλλ λͺ¨λ νμΌ/λλ ν 리λ₯Ό μ μΈνλ €λ©΄ *~
.~/.cache
λ λ¬Όκ²°νλΌκ³ νλ λͺ¨λ λλ ν 리μμ .cache
λλ ν 리λ₯Ό μ μΈν©λλ€. λ¨μ§ λΉμ μ ν λλ ν 리μ μΊμ λλ ν 리λ₯Ό μ μΈ λ€μ΄, μ¬μ© $HOME/.cache
(λ¬Όκ²°μ΄ νμ₯λμ§ μμ νκ²½ λ³μλ μμ§λ§ νμΌμ ν΅ν΄ μ½κΈ° μ μ©μ --exclude-file
λͺ
λ Ή μ€μμ, μ ν½μ°½ λ λ€)./full/path/to/directory/.syncthing/index*
λ index
μλ /full/path/to/directory/.syncthing
index
μμνλ μ΄λ¦μ κ°μ§ λͺ¨λ νλͺ©μ μ μΈν©λλ€.κ°μ¬ν©λλ€ @fd0
λ°λΌμ "νμ¬ λλ ν 리"λ λ΄κ° λ°±μ μ μμν λ μμλ λλ ν 리λ₯Ό μλ―Ένλ κ²μ΄ μλλΌ resticμ΄ νμ¬ νμΌμ κ²μ¬νλ λλ ν 리λ₯Ό μλ―Έν©λλ€(μ¬λμλ‘ μμνλ μ μΈ μ μΈ). μμμ΄μ.
νμΌ λ° λλ ν 리μ λμμ μ½κ° μμμΉ λͺ»ν κ²μ λλ€. --exclude foo/λ λλ ν 리λ₯Ό λ°±μ νμ§λ§ λ΄μ©μ λ°±μ νμ§ μλ λ°λ©΄ --exclude fooλ λ λ€ λ°±μ νμ§ μμ΅λλ€. μ΄μ λ λͺ¨λ₯΄κ² μ§λ§ rsyncμμ μΆμΈ‘ν©λλ€.
λ΄ μμ λ μ€μν νλλ₯Ό λμ³€μ΅λλ€. 곡백! λλ κ·Έκ²λ€κ³Ό μ λ©ν λ¬Έμλ₯Ό λ°±μ¬λμλ‘ μ΄μ€μΌμ΄νν΄μΌνλ€κ³ μκ°ν©λλ€.
λλ μ΄κ²λ€μ λ§μ΄ 볡μ¬νκ² λμμ΅λλ€: https://gist.github.com/jult/e2eaedad6b9e29d95977fea0ddffae7d
μ μΈ νμΌμ μ£Όμμ΄ νμ©λ©λκΉ? νΈμ§: https://github.com/restic/restic/pull/916/commits/c796d84fca48feea91ca3e85fbf38e16f764a468 ν΄μκ° μ£Όμ λ¬ΈμμΈ κ²μ²λΌ 보μ λλ€.
μ, μμ§ μμ ν μ ννμ§ μμ΅λλ€. λλ resticμ΄ μ΄λ»κ² μ μΈ ν¨ν΄μ νκ°νλμ§ μ€λͺ
ν κ²μ΄λ€. λ€μκ³Ό κ°μ΄ μ¬μ©μκ° ν λλ ν 리( /home/user
)μμ resticμ μ€ννλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.
$ restic backup --exclude='*.bak' --exclude='/home/user/secret' --exclude='extra' ~
κ·Έλ¬λ©΄ resticμ λ€μ λͺ λ Ήμ€ μΈμλ₯Ό λ³Ό μ μμ΅λλ€(μ Έλ‘ νμ₯ν ν).
["restic", "backup", "--exclude='*.bak'", "--exclude='/home/user/secret'", "--exclude='extra'", "/home/user"]
κ·Έλ° λ€μ /home/user
μνλ₯Ό μμν©λλ€. λ€μ λͺ©λ‘μ λͺ
λͺ
λ νμΌ/λλ ν λ¦¬κ° νμλ λ λ°μνλ μΌμ μ€λͺ
ν©λλ€. resticμ νμ ν¨ν΄μ λν΄ μ 체 κ²½λ‘λ₯Ό ν
μ€νΈν©λλ€.
/home/user/foo.bak
: *.bak
ν¨ν΄μ΄ μΌμΉνκ³ νμΌμ΄ μ μ₯λμ§ μμ΅λλ€. ν¨ν΄μ μ λμ μ΄μ§ μμΌλ―λ‘ .bak
λλλ λͺ¨λ νμΌμ λν΄ λͺ¨λ κ³³μμ μΌμΉν©λλ€./home/user/secret
: μ λ ν¨ν΄ /home/user/secret
μΌμΉνλ―λ‘ dirμ΄ μ μ₯λμ§ μκ³ νμλμ§ μμ΅λλ€./home/user/foo/home/user/secret
: μΌμΉνλ ν¨ν΄μ΄ μμΌλ―λ‘ dirμ΄ μ μ₯λ©λλ€./home/user/work/extra
: extra
ν¨ν΄μ΄ μΌμΉνλ©΄ dirμ΄ μ μ₯λμ§ μμ΅λλ€.μ΄μ μ΄κ²μ΄ μ‘°κΈ λ λͺ νν΄μ§κΈ°λ₯Ό λ°λλλ€. 맀λ΄μΌμ νλ‘μΈμ€λ₯Ό μ€λͺ νλ μΉμ μ μΆκ°νκ² μ΅λλ€. μ€μν μ μ λ°±μ νλ λμ νμΌμ μ 체 κ²½λ‘μ λν΄ ν¨ν΄μ νκ°νλ€λ κ²μ λλ€. λ°λΌμ λ¨μΌ λλ ν 리μ μΌμΉμν€λ €λ©΄ μ 체 κ²½λ‘λ₯Ό μ¬μ©νμμμ€. κ·Έλ μ§ μμΌλ©΄ μ΄λκ°μμ μ¬λ¬ λ² μΌμΉν μ μμ΅λλ€.
μΆκ° μ§λ¬Έμ΄ μμΌμ κ°μ? :)
μΆκ° μ§λ¬Έμ΄ μμ΅λλ€. μκ°μ λ΄μ΄ λ΅λ³ν΄ μ£Όμ μ λλ¨ν κ°μ¬ν©λλ€. κ·Έκ²μ ν¨ν΄μ μλ κ³ μ μ λν νλμ μ§λ¬Έμ λλ€. λλ λ΅μ μΆμΈ‘ν μ μλ€κ³ μκ°νμ§λ§(μ°λ¦¬λ μ λ κ²½λ‘κ° μλΉν λ νΉνκ³ μ°λ¦¬κ° μνλ λμμ μ 곡νλ κ²μ μμ‘΄ν©λλ€), λ¬Όμ΄λ³΄κ³ νμ νλ κ²μ΄ κ°μ₯ μ’μ΅λλ€.
μ λ ν¨ν΄ /home/user/secret
/home/user/secret2
μ μΌμΉν©λκΉ? (νκΈ° μ«λ€λ©΄?)
μ λ ν¨ν΄ /home/user/secret
/home/user/somemount/home/user/secret
μ μΌμΉν©λκΉ?
λ κ²½μ° λͺ¨λ: μλμ, ν¨ν΄μ΄ μΌμΉνμ§ μμ΅λλ€.
μ κ·Έλ° κ²λκΉ? νΈμ§: κ·Έλ μ§ μμ κΈ°μμ§λ§ μ κ·Έλ°μ§ λͺ¨λ₯΄κ² μ΅λλ€. :)
μΌμΉνλ μ½λλ μμ΄ μννλ μμ
μ λͺ¨λΈλ‘ ν κ²μ
λλ€. /home/user/secret2
νμΌμ΄ μ‘΄μ¬νλ€λ©΄ ls /home/user/secret
λ 무μμ μΈμν κΉμ? ( secret
νμΌ μ 곡 μ‘΄μ¬νμ§ μλλ€)?
λ³΄λ€ κ³΅μμ μΈ μ©μ΄λ‘: ν¨ν΄μ΄ /
νλ©΄ μ λ ν¨ν΄μ΄κ³ ν
μ€νΈ μ€μΈ λ¬Έμμ΄μ μμ λΆλΆμμ ν¨ν΄μ΄ μΌμΉν΄μΌ νλ―λ‘ /home/user/secret
ν¨ν΄ /home/user/somemount[...]
μ μΌμΉνμ§ μμ΅λλ€
ν¨ν΄κ³Ό νμΌ κ²½λ‘κ° κ°κ°μ κ΅¬μ± μμλ‘ λΆν λμ΄ μλ€κ³ μ€μ€λ‘ μμν μ μμ΅λλ€.
/home/user/secret
λ‘ λΆν [ROOT, "home", "user", "secret"]
λ° νμΌ /home/user/somemount/home/user/secret
λ‘ μ€νλ¦Ώ [ROOT, "home", "user", "somemount", "home", "user", "secret"]
. ROOT
λ¬Έμμ΄μ μ΄ μμμ λ£¨νΈ λλ ν 리λ₯Ό νμνλ λ° μ¬μ©λ©λλ€. νμΌλͺ
μ ν¨ν΄μ΄ ν¬ν¨λμ΄ μμ§ μμ κ²μ νμΈν μ μμ΅λλ€.[ROOT, "home", "user", "secret2"]
λ‘ λΆν λ /home/user/secret2
νμΌμ μ΄ν΄λ³΄κ² μ΅λλ€. λ€μ νμΌ μ΄λ¦μ ν¨ν΄μ΄ ν¬ν¨λμ§ μμ κ²μ λ³Ό μ μμ΅λλ€./home/user/secret/secret.txt
λ‘, μ΄λ λΆν [ROOT, "home", "user", "secret", "secret.txt"]
λ ν¨ν΄μ΄ μ°ΈμΌλ‘ λ°λ‘ μμ λΆλΆμ νμΌ μ΄λ¦μ ν¬ν¨λμ΄μλ κ²μ λ³Ό μμλ€ : [ROOT, "home", "user", "secret", ...]
λ°λΌμ ν¨ν΄ μΌμΉ κ·Έλ¦¬κ³ νμΌμ μ μΈλ©λλ€.["secret", "secret.txt"]
λ‘ λΆν λλ secret/secret.txt
μ μλ μ μΈ ν¨ν΄μ΄ μλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€. μ΄ ν¨ν΄μ /home/user/secret/secret.txt
νμΌμ λͺ©λ‘μμ μ°Ύμ μ μμΌλ©° μ€νμ
3: [ROOT, "home", "user", "secret", "secret.txt"]
μμ μμνμ¬ ν¨ν΄μ΄ μΌμΉν©λλ€.κ²½λ‘ κ΅¬μ± μμμ μμΌλμΉ΄λ( *
, ?
λ±)κ° μλ κ²½μ°μλ ν
μ€νΈλ©λλ€. κ·Έλμ 첫 λ²μ§Έ μλ₯Ό λ€μ΄, ν¨ν΄ /home/user/secret*
κ²½λ‘ μΌμΉν©λλ€ /home/user/secret2
.
μ΄ λͺ¨λ μλ 맀λ΄μΌμ λ¬Έμνλμ΄μΌ νλ€κ³ μκ°ν©λλ€.
μ‘μλ€. κ°μ¬ ν΄μ.
μμλ κ°λ₯ν ala .gitignoreλ₯Ό μ μΈν©λκΉ?
μ€μ²©λ dir .meteor/local/dbλ₯Ό μ μΈνκ³ .meteorλΌλ μ΄λ¦μ λλ ν 리μ μλ λͺ¨λ μ½ν
μΈ λ₯Ό μ μΈνκ³ μΆμ΅λλ€. μ΄ μμ
μ μνν μ μμ΅λκΉ?
/etc/restic/μ μΈ:
.meteor/
!.meteor/local/db
restic backup exclude-file=/etc/restic/excludes
μλμ, μμ§ κ΅¬νλμ§ μμμ΅λλ€.
ν¬ν¨/μ μΈ μμ λ₯Ό λ¬Έμννλ κ²μ #396μ μμ΅λλ€. μ¬κΈ°μμ μ΄ λ¬Έμ λ₯Ό λ§λ¬΄λ¦¬νκ² μ΅λλ€.
@fd0 λͺ¨λ λλ ν 리μμ μμΉ΄μ΄λΈ λλ ν 리λ₯Ό μ μΈνκΈ° μν΄ μλμ μμ / /jobs/ /builds/**/archiveμ κ°μ μ μΈ κ²½λ‘λ₯Ό μλνκ³ μμ΅λλ€. κ·Έλ¦¬κ³ λλ μ μΈν΄μΌ ν μ΄μ κ°μ μ¬λ¬ κ²½λ‘κ° μμ΅λλ€. κ°λ₯ν κ²½μ° λ¬Έμμμ κ·Έλ¬ν μ’ λ₯μ λν μλ₯Ό μ°Ύμ μ μμΌλ―λ‘ μ΄λ¬ν μ’ λ₯λ₯Ό μ²λ¦¬νλ κ°μ₯ μ’μ λ°©λ²μ μ μν μ μμ΅λκΉ?
κ°μ₯ μ μ©ν λκΈ
μ΄λ―Έ λͺ κ°μ§ μ§λ¬Έμ λ΅νλ €λ©΄:
--exclude foo
λfoo
λΌλ νμΌκ³Ό λλ ν 리λ₯Ό μ μΈν©λλ€.--exclude foo/
λ§μ°¬κ°μ§μ λλ€.μ μΈ νμΌμμ:
._*
λ μ΄λ¦μ΄ μ κ³Ό λ°μ€λ‘ μμνλ λͺ¨λ νμΌ λ° λλ ν 리μ μΌμΉν©λλ€.desktop.ini
λdesktop.ini
λΌλ λͺ¨λ νμΌκ³Ό μ νν μΌμΉν©λλ€. λ°λΌμdesktop.ini.bak
λ μ μΈλμ§ μκ³ μ€λ μ·μ μ μ₯λ©λλ€..Trash-*
λ.Trash-
,.Trash-foobar
λ±μ νμΌ/λλ ν 리λ₯Ό μ μΈν©λλ€..tmp$
λ¬Έμ κ·Έλλ‘.tmp$
λΌλ μ΄λ¦μ λͺ¨λ νμΌ/λλ ν 리λ₯Ό μ μΈν©λλ€. μ¦, μ ,tmp
λ€μμ λ¬λ¬ κΈ°νΈκ° μ΅λλ€. μ κ· ννμ νμ₯μ΄ μμ΅λλ€.~$
λ§ κ·Έλλ‘ λ¬Όκ²° λ¬λ¬λΌλ μ΄λ¦μ λͺ¨λ νμΌ/λλ ν 리λ₯Ό μ μΈν©λλ€. λ¬Όκ²°νλ‘ λλλ λͺ¨λ νμΌ/λλ ν 리λ₯Ό μ μΈνλ €λ©΄*~
.~/.cache
λ λ¬Όκ²°νλΌκ³ νλ λͺ¨λ λλ ν 리μμ.cache
λλ ν 리λ₯Ό μ μΈν©λλ€. λ¨μ§ λΉμ μ ν λλ ν 리μ μΊμ λλ ν 리λ₯Ό μ μΈ λ€μ΄, μ¬μ©$HOME/.cache
(λ¬Όκ²°μ΄ νμ₯λμ§ μμ νκ²½ λ³μλ μμ§λ§ νμΌμ ν΅ν΄ μ½κΈ° μ μ©μ--exclude-file
λͺ λ Ή μ€μμ, μ ν½μ°½ λ λ€)./full/path/to/directory/.syncthing/index*
λindex
μλ/full/path/to/directory/.syncthing
index
μμνλ μ΄λ¦μ κ°μ§ λͺ¨λ νλͺ©μ μ μΈν©λλ€.