Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
IPFS 安装. b3 A6 ?8 u$ P: [/ g: t! I' X5 K
& D. X+ i( T  C% ?
要使用IPFS, 第一步肯定是先把IPFS安装好,IPFS在Mac OS X 、Linux及Window平台均有提供, 可以通过这个链接下载对应平台可执行文件的压缩包。
1 Q# @/ C- p! t) m, T
, u4 u  J8 x; O7 L2 l" ^对于Mac OS X 及 Linux 平台,使用一下命令进行安装:
1 c' y3 ?5 p' W4 a# n) h" o" G8 X. O) D! o% s! n7 w8 G# b5 k4 ]9 X% W
$ tar xvfz go-ipfs.tar.gz+ E; f  a  Q, K& x$ S1 v3 J" I

! f6 V0 A0 }" Z' G- L* [' p& b: ]$ cd go-ipfs( _4 R. \& ?9 \& f1 G, V7 P) D
8 H" K3 r  A; {5 k8 s: K: C0 k
$ ./install.sh# M( ], e8 @4 q7 Z

4 v! h$ P/ V( n5 `: L( h- s上面先使用tar 对压缩包进行解压,然后执行install.sh 进行安装,安装脚本install.sh其实就是把可执行文件ipfs移动到$PATH目录下。安装完成之后,可以在命令行终端敲入ipfs试试看,如果显示一堆命令说明,则说明IPFS安装成功。% a) U+ k% q- @; a
! q2 a& P4 p9 L7 x& {
在Windows平台也是类似,把ipfs.exe移动到环境变量%PATH%指定的目录下。
! m! J  c* {& K. a2 y
5 [$ W' Y. Z$ X- w, h( p' Y% xIPFS 基本用法/ |3 ]# p5 a; R

, T' @; ?. A& ~- YIPFS初始化
1 p6 C% k  y" F
" H0 c; `( ^# [/ y安装完成之后,要使用IPFS第一步是要对IPFS进行初始化,使用ipfs init进行初始化
4 h: p* A- O1 Y3 y% v2 L2 H4 V" H) W8 P" o/ X
> ipfs init
9 p% ]  E- Y& R5 V7 ?+ [
1 V& i2 y- B, M" l& ^# Vinitializing ipfs node at /Users/Emmett/.ipfs
9 y/ K/ G4 T; u# z! H  v
: P) W6 h# {9 H& R* U3 ~generating 2048-bit RSA keypair...done
1 q7 A% l% M9 p' l6 v# {5 [: j, f0 I- R% V1 j4 J
peer identity: QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva# L6 K# A$ x2 C" p+ k

. F! W& ]+ R# o+ J) U* Fto get started, enter:
3 c0 @# a8 S2 o; V- |( j9 ]) B3 n% e. a( }! F. h
  ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme! i0 h2 N$ a! N* U

! c0 x0 e' Y/ A) l2 R) t上面是执行命令即对应输出,在执行ipfs init进行初始化时,会有一下行为:
7 j+ H& z# N' y# q1 s2 X( R; b3 N
生成一个秘钥对并产生对应的节点id, 即命令提示:peer identity后面的hash值。, ]7 _1 a6 B  F* ~# W  a7 ]

5 R' k% {* j* q% l1 J节点的id用来标识和连接一个节点,每个节点的id是独一无二的, 因此大家看到的提示也会和我的不一样。
/ l+ e' g: t- K5 X4 T# `, o0 F8 _/ D3 p( z3 i0 J
在当前用户的主目录(~ 目录)下产生一个.ipfs 的隐藏目录,这个目录称之为库(repository)目录,ipfs 所有相关的数据都会放在这个目录下。( v! A7 W' ?7 q4 h

0 Z' s% W4 N# b' N2 K4 c( V' d1 `如同步文件数据块放在.ipfs/blocks 目录,秘钥在.ipfs/keystore 目录,ipfs配置文件为:.ipfs/config。
% N$ |. q) c. {3 f# K. i- H0 n$ [, N  j8 I5 T; u- R! @. x9 T( y' _0 S
IPFS 配置修改
) U; t6 u- P( z% Y* d8 {
( I' }, I5 f+ F5 n* _* h0 ^在IPFS初始化之后,可以根据需要修改配置(可选),修改方法如下:
+ {$ S' a  {4 J, Y* g2 _4 O" e( O" I' L3 a
cd ~/.ipfs  T6 v. O4 R, Q# e( F) D) e: g$ ~
5 R9 v. N  {3 \+ u( ~, H
export EDITOR=/usr/bin/vim+ @$ U" P2 t( }9 \& F8 ]
6 O* n# n. h% a' |; W2 R; m
ipfs config edit8 l1 I( L0 \9 i5 ?
/ h4 b* z" N8 e$ T5 x% W, \0 ]
或者直接编辑 ~/.ipfs/config 文件。
  q% A+ c8 y  E* N3 j$ R- N; k0 T, Q& f8 V
上传文件到IPFS
) Q0 F" V9 B- y1 q. r5 @
: N( x" M/ t, b2 ]. W我们先创建一个upchain.pro.txt文件,可以使用如下方式:5 F& [# s) L5 u1 q2 L! ^! h

% V) K1 E3 A5 ~. H> echo "比特池塘:www.bitmere.com" >> upchain.pro.txt
: o5 T) ]+ z2 n% {+ @2 o  a  b1 N: P* y* K4 H- d
ipfs 使用add 命令来添加内容到节点中,  在命令行输入:
  ?+ J, L7 m5 v9 j5 Q" |- V$ s! E, ^  L! a, h
> ipfs add upchain.pro.txt
% ?/ i; Q; w" K2 M/ }5 j
& S# K( Y. u0 B7 Z* s, Oadded QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi upchain.pro.txt. Y% T% \8 B# z- C2 C- F2 Y# p" W

7 |) F! Y0 I: `. G4 d7 J8 J43 B / 43 B [=====================================================] 100%' z: \  `3 c, T: d0 e
, ^" t1 U  ]6 x$ r3 Y! Q: n
当它文件添加到节点时,会为文件生成唯一的hash: QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi, 可以使用ipfs cat 查看文件的内容:1 S$ ?  G4 R" r4 v6 O3 K: V' K

* ^0 U) u1 M" v5 @' X9 N4 h> ipfs cat QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi. F0 e3 L. x: g
+ v' \0 s9 y/ a4 a& }+ |
* I' t" f0 I7 p7 ]1 k7 L! I
注意,此时文件仅仅是上传在本地的IPFS节点中,如果需要把文件同步到网络,就需要开启 daemon 服务, 使用命令:
; \! H% N1 R1 C$ q  G" t2 _' t6 W; e$ ?+ P) h* o* A
> ipfs daemon. ~$ e2 L% N9 |0 n' g# H  n( F, k

: y+ {6 I- p9 R6 B# T+ WInitializing daemon...
. [( O) A: _/ [# g. ^/ h+ v, e7 |  o( C/ k7 v
go-ipfs version: 0.4.18-7 u$ x% \% H7 G) [4 s

1 G2 a' D+ @( Q' J1 p- v6 VRepo version: 7
6 z( r* \; \8 \3 e0 d: S
* m% G) v2 y1 K% j  k0 y# G+ JSystem version: amd64/darwin! \8 K3 y5 W, w
- g+ s# \  N$ X; H$ Y! i+ k6 p
Golang version: go1.11.1) D7 F6 ~2 ?4 I
, e% i) @6 r5 ]
Swarm listening on /ip4/127.0.0.1/tcp/4001
) N- y6 j! W+ S" R; C2 r" F! m+ o( J
Swarm listening on /ip4/192.168.8.105/tcp/4001
4 Z+ T4 w- @2 b) x- U6 L  b* E6 }5 M& m3 a8 d& t& ^& a* U3 _
Swarm listening on /ip6/2408:84f3:82e:cfcd:409:fee2:e261:4dc3/tcp/4001- c+ D* ^/ h. I7 d+ o; X
6 g* @: I  W. m8 F& b0 r& P/ y4 m6 v& f
Swarm listening on /ip6/2408:84f3:82e:cfcd:a9c6:116b:349f:8c2b/tcp/4001
- R- P0 y; u% j0 z% V: w3 o0 ^$ P7 o! m% q0 _1 P. y9 r
Swarm listening on /ip6/2408:84f3:82e:cfcd:ec89:145d:cf27:4/tcp/40011 B$ ~+ I" Y( |2 d8 z& w
5 |& H4 U2 V/ b! G3 x$ R8 i% \
Swarm listening on /ip6/::1/tcp/40014 L0 t3 i  ?, T7 s" S0 W2 W
4 \2 {7 G& j0 A: M
Swarm listening on /ip6/fd1d:43b:e89b:eb9b:c405:56af:8f52:67df/tcp/4001
& r1 i3 T) C- X2 |
, {$ ?- v: q2 m" P% a4 {Swarm listening on /p2p-circuit
9 m8 b2 k6 x5 P) @
8 H% U) w- `: I8 l/ I7 Z4 Y/ CSwarm announcing /ip4/127.0.0.1/tcp/4001
, l( L! d- x. \. f3 G5 Z/ S$ f$ q/ m$ h9 y! `2 k
Swarm announcing /ip4/192.168.8.105/tcp/4001. A7 J. i* q6 x' ^, i4 Q* Z

% j  q* W* l8 o5 {Swarm announcing /ip6/2408:84f3:82e:cfcd:409:fee2:e261:4dc3/tcp/4001
4 _2 W5 K/ }; `0 }9 k# G- ^5 V3 ^- T
Swarm announcing /ip6/2408:84f3:82e:cfcd:a9c6:116b:349f:8c2b/tcp/4001
% B& g6 j3 \( t& G3 S# s( u7 `: a5 H5 j" E% I$ E: i# ]+ m3 C
Swarm announcing /ip6/2408:84f3:82e:cfcd:ec89:145d:cf27:4/tcp/4001
# t1 X6 W1 K! A) k) y# E: K4 w: W7 D* v( [
Swarm announcing /ip6/::1/tcp/4001
8 I4 e" \% y; r& v! e- P& L
) c, ^+ \8 e9 B% X1 CSwarm announcing /ip6/fd1d:43b:e89b:eb9b:c405:56af:8f52:67df/tcp/4001
) }* i; v& I) ~5 ^; }, u  z3 G1 v5 d- N  B# {
API server listening on /ip4/127.0.0.1/tcp/5001
+ w- M, X1 a( ^4 U' a; I
  P$ |2 t+ {) r3 |% U$ }Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080! }4 o2 z4 D" [) U9 P9 X
/ `% H4 W/ o# @5 Q. R' j0 w
Daemon is ready1 S) K- H. B9 r4 f% i, d

5 Y3 q5 g! _7 W5 B* l, o7 P; e开启 daemon 之后,Swarm 就会尝试连接其他的节点,同步数据,同时在本地还会开启两个服务:API服务及Web网关服务,下面分别介绍下:1 Y2 M/ B. O$ j( s) M  m

" C; x: z9 @: ?! x4 Q: SAPI服务,默认在5001端口,可以通过 http://localhost:5001/webui 进行访问,界面如:; h* E5 C: n1 L+ E+ G% U+ ^" U
$ e; \) @7 E7 f7 f6 W
这也是IPFS的一个Web版的管理控制台, 可以通过这个控制台添加文件,查看节点连接情况等等。
% A9 u$ Y3 ?# o3 z! i* h2 w. W, R. u9 H4 d9 U) |4 f: C
网关服务,默认在8080端口, 由于当前浏览器还不支持通过IPFS协议(ipfs://)来访问文件,如果我们要在浏览器里访问文件的话,就需要借助于IPFS 提供的网关服务,由浏览器先访问到网关,网关去获取IPFS网络杀过了的文件。 有了网关服务,就可以通过这个链接:http://localhost:8080/ipfs/QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi 来访问刚刚上传到ipfs 的文件。% ~& E/ G4 Z6 X0 y: ]
3 X4 p  e8 |" T; s% e& b; J
ipfs 也提供了官方的网关服务:https://ipfs.io/, 因此也可以通过 https://ipfs.io/ipfs/QmQgMZKqHzy ... UDVjqhJDoaUKDymgioi (需要翻墙)来访问刚刚上传到ipfs 的文件。
# }: l5 C/ M" w1 n* w2 `2 p- i" `9 e! Z. @- k* j  z
上传目录到IPFS7 [6 I5 L: N% p2 U3 w
2 q- y8 }9 H# a
我们先创建一个文件夹upchain, 并把之前的 upchain.pro.txt 放进目录。# S* f9 h- [& v6 @* b5 q. W3 y

7 F+ m6 b/ Z! _> mkdir upchain- _( i6 f) [( w: W- J
: w5 R$ d+ n6 Q7 l& G! j% [' G6 W
> mv upchain.pro.txt  upchain
' U% m  D, ]( I5 y& I0 x
9 F/ u: u/ t. s) ]) F上传目录到IPFS 需要在使用 add 命令时加上 -r ,如下:
: o  O7 L2 Q8 T- R3 l+ {. D: N1 Z' W$ Z/ ^
> ipfs add -r upchain
. \; n+ x' \  `7 k7 J8 o
# p5 ^' E5 t4 M, y. Gadded QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi upchain/upchain.pro.txt
+ g3 w3 c1 V$ s) R7 D8 Z$ @( A# G
& q1 E+ D1 s5 ?. ]/ g3 X+ M. I& Y7 B7 cadded QmQYpGRFBpHVzoShpwU5C3XgGAxJKqY83X8VXfMbyktdbP upchain
# s$ {, X7 ?4 @! p% z  B0 M7 g! U) ^% M8 c$ g/ [
43 B / 43 B [===========================================================================] 100.00%
2 W0 s8 u2 q3 a% \7 [
7 l* W$ K) I& u: u0 e4 c& u9 B在上传时文件夹,文件夹也会生成一个对应的hash,可以通过hash后接文件名来进行访问, 如:# W7 K' Y% s$ v/ {

2 r7 \1 @' S  @0 E8 Z>ipfs cat QmQYpGRFBpHVzoShpwU5C3XgGAxJKqY83X8VXfMbyktdbP/upchain.pro.txt+ \: Y. B: G; m! u$ Z# g7 h; m

6 E2 A* _/ g9 U' \% P( W( `
- W0 d* A% C* t. S在浏览器可以链接:http://127.0.0.1:8080/ipfs/QmQYp ... dbP/upchain.pro.txt 来访问。* ^, Q; G% p% W6 p) `6 D, P
* r0 S- I( n0 r
通过上传目录的方式,可以把整个静态网站的根目录上传到IPFS网络,这样就可以省去托管服务器,例如可以直接通过以下链接访问深入浅出区块链博客:9 z  N6 m' @- b, F; D" O7 A
" h7 ?+ ]" g+ j- y+ x3 B1 X# \
https://ipfs.io/ipfs/QmaFWgfpRNz ... uCphq2ua/index.html
7 Y" I2 y1 B( y4 O5 Q8 w
1 h. J! ]5 z2 D' z1 y1 ]使用IPNS解决文件更新问题
! E7 W# Q* t, r$ j4 R! w) r+ W8 U' G1 Q$ }8 q, e+ {% V6 [
因为IPFS在IPFS中,对一个文件的内容修改后(如升级),会生成一个完全不同的新Hash,使用IPNS就可以利用同一个链接总是指向更新的内容,其实使用也很简单,只需要每次在内容更新之后使用ipfs name publish hash 发布到节点。+ w# A2 Q4 E1 l" T

0 w+ ?" t5 ]4 |0 ~7 }3 r例如把upchain.pro.txt发布到节点,使用下面的命令:
* c. @9 U8 ]3 c+ ~; e- r0 @4 u+ C% Z4 h6 j
> ipfs name publish QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi
2 G- j/ @9 N/ i; J& }
! n( b/ G  s! E, u2 EPublished to QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva: /ipfs/QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi
$ {% C. w8 Y8 o2 I; g
/ B/ p' V1 \7 X7 n* d# V) G命令中的QmQgMZKqHzyEdyJja5ioF8WaXrbUDVjqhJDoaUKDymgioi是upchain.pro.txt的hash, 命令提示中的QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva是当前节点id(大家可以回看一个前面ipfs init 的输出)。: e( ?' Q" _# Z, C/ `# t1 ~
* P" {' B) U' J8 X
发布之后就可以使用http://127.0.0.1:8080/ipns/QmYM3 ... VvmDU7xKUiVeswBuTva 或 https://ipfs.io/ipns/QmYM36s4ut2 ... VvmDU7xKUiVeswBuTva 来访问upchain.pro.txt的内容,如图:3 W8 j3 o+ U- Q  j( l6 Z3 y9 b" W

6 x6 Y0 w2 c  J' Z, f. [6 K, o/ y其实理想下是使用 ipns://QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva 来访问,通过网站还是前面提到的浏览器暂不支持ipfs协议。/ G: o, K& ], h
: N4 H! [5 w& o) |
现在我们来更新一下upchain.pro.txt 加入文字:“创办人:Tiny熊”9 \& K% l3 t+ A0 D

2 D4 D( S8 t  V8 X> echo "创办人:Tiny熊" >>  upchain.pro.txt! s6 s* Y6 W* d: y. ]: L% S7 b
7 z, W& j1 W  n% o/ N/ _+ ?
> ipfs add upchain.pro.txt4 D; R5 s( k* p! P
# n" F# q( f8 U" }, |
added QmUUiDN6tWtj89xmUw1iCK2NczBqE6m3zH9QnbhHoMvZ5S upchain.pro.txt
9 i" b6 Q! ?& E& D) D. @) u; F) b0 u  A; ?. P- z
63 B / 63 B [=============================================================] 100.00%* J7 v* w2 t" T) c- [2 h+ m

8 S& L& k, B4 v# T重新发布一下:
4 W/ {6 g" W9 a% `
6 s- C1 j9 N9 M9 r# M* m9 R8 c> ipfs name publish QmUUiDN6tWtj89xmUw1iCK2NczBqE6m3zH9QnbhHoMvZ5S( e: r" V$ m$ Z; J' G7 V
  `7 Z* }: i/ s
Published to QmYM36s4ut2TiufVvVUABSVWmx8VvmDU7xKUiVeswBuTva: /ipfs/QmUUiDN6tWtj89xmUw1iCK2NczBqE6m3zH9QnbhHoMvZ5S, S4 S' S7 N9 _8 t) z" N

- q& P( L  ]/ R% g% t3 e: h8 B0 e& h5 y再次访问 http://127.0.0.1:8080/ipns/QmYM3 ... VvmDU7xKUiVeswBuTva (这个链接和上面的链接一样)可以看到内容更新了。
( v* h/ O! p% z7 U% q# n8 V+ x, I
- k) c- z8 k( O6 W如果我们要查询 节点id 指向的hash 可以使用 ipfs name resolve  进行查询:+ H4 r' z7 a& b( J

: H& J) z; `! i6 W6 [$ h> ipfs name resolve- Y5 Z9 ]7 O8 H* l) c

5 o: F8 f7 W( I: f/ P) P4 [. Q- j/ipfs/QmUUiDN6tWtj89xmUw1iCK2NczBqE6m3zH9QnbhHoMvZ59 U! O: `' S5 l" i* f7 z/ d" |- y
" b/ l: y5 e+ R+ u4 w  X
有一点值得大家注意: 节点id其实是公钥的hash,它的关联信息是需要经过私钥签名才可以发布,因此只有我们自己才可以更新节点的指向。
0 d) s7 L* L: j; X
- k* L( M% n, D* a. n- l& H, U) j1 x  m1 d如果我们有多个站点需要更新,可以新产生一个秘钥对,使用新的key 发布,如:; A/ i9 w0 \5 A8 N0 f) w9 V) [

# x$ ^* R9 E9 T" _6 d; v, j- p( F6 w> ipfs key gen --type=rsa --size=2048 mykey
% b, N( W! u+ V2 p% W8 M. E3 U" C, Q3 V# H2 v  b
QmVZvdYEsdfHSR43Qm1fY8eDFrhB3UNZ2oVyEuVUH3VHrg/ x7 p/ ~9 ~" p" t( |
+ ~- M4 @' p+ m' n  Q& ^) K
> ipfs name publish --key=mykey  hashxxx- r2 m0 H4 {/ l: f( u$ R

6 X3 ]1 P8 J$ p  wPinning6 d. \0 p1 c/ k3 q( e" ~) _! W

* r  x- ^6 p" c) J/ G* W1 Y9 `Pinning 在IPFS里是一个很重要的概念,当我们每次请求一个网络上的内容的时候,IPFS总是会把内容先同步的本地提供服务,而为了防止 IPFS 存储空间不停增长,实际上使用cache 机制来处理文件, 如果文件在一段时间内没有被使用,文件会被”回收“。 Pinning 的作用就是把文件”钉“住,确保文件在本地不被”回收“。 如果是重要的文件,就可以使用 Pinning 防止文件被删除。5 u# V! n) Z) H# H( P8 R
5 x8 |# ]$ K/ B! Y/ j7 M; g/ A
当我们使用ipfs add 添加文件时,默认会进行Pinning(使用其他命令获取的文件不会进行pinning),7 [/ r2 E$ c* {; F

# g) M0 Z/ ~/ d% ~. yIPFS 提供了pin命令进行Pinning操作, 比如我们查询下某一个hash 是否被pin:. t$ I" _" G- y  x
0 K8 a# G, x2 v" ^
> ipfs pin ls QmUUiDN6tWtj89xmUw1iCK2NczBqE6m3zH9QnbhHoMvZ5S5 ?  ~. j  P  I, e' o# b! H
# {1 A1 i4 y" r$ y* e
QmUUiDN6tWtj89xmUw1iCK2NczBqE6m3zH9QnbhHoMvZ5S recursive
6 R3 J  ?  {3 m* v' `8 d2 g" ^- @
! M. P( J6 P) z( P0 J3 [> ipfs pin ls QmWnrAEKyDVUQ1jh9vDtQhtBSNEgUnQhAJyMmo3JjwJZK7
' c" a) K. \/ i) }+ R& V# G
% Q  k  \/ n$ S* WError: path 'QmWnrAEKyDVUQ1jh9vDtQhtBSNEgUnQhAJyMmo3JjwJZK7' is not pinned8 E, w1 t1 z8 t& k+ k  o

; ?" x" J2 n' z3 @* T) P可以使用 pin add 手动钉住一个文件,如:
" D( M8 t+ n1 K% p( R
/ J; j) n9 M1 `5 ]0 B3 t( E% G> ipfs pin add QmWnrAEKyDVUQ1jh9vDtQhtBSNEgUnQhAJyMmo3JjwJZK7
2 F! P  D' z! U  M3 g$ U2 s
; ]) P. {6 \- l& Vpinned QmWnrAEKyDVUQ1jh9vDtQhtBSNEgUnQhAJyMmo3JjwJZK7 recursively* S: C( Q& ^7 ^" N

$ V/ p8 v; i4 Z- h: r如果要删除pin的状态,使用pin rm , 如:# q8 n" h0 K. Z. R2 ~. ^

# c$ V% c" e! X  p> ipfs pin rm -r QmWnrAEKyDVUQ1jh9vDtQhtBSNEgUnQhAJyMmo3JjwJZK7
2 q+ ]0 k$ }# Y- }& ?; j& B# i" b7 @( u( g% u
unpinned QmWnrAEKyDVUQ1jh9vDtQhtBSNEgUnQhAJyMmo3JjwJZK79 K7 s6 k$ `1 Q2 x1 W! Y2 s4 K

5 I' p4 {+ K# x" o: m+ N2 bpin rm 的参数 -r 表示递归的删除pin 状态,对于没有pin住的文件, 如果执行GC操作 ipfs repo gc 文件会被删除。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

在冰雪中的玫瑰 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2