2017-05-19 11 views
0

재귀 심볼릭 링크 디렉토리 트리 :나는 다른에 하나의 디렉토리에서 재귀 심볼릭 링크를 실행하기 위해 노력하고있어

find data/* -type d -exec ln -s {} current/{} \; 

또한 하나 : 나는 접두사에서 data/을 제거해야합니다.

OS X 서버 (10.8, Mountain Lion)에서 실행 - cp -rs과 같은 모든 표준 GNU 명령이 지원되는 것은 아닙니다. 내가 재귀 적으로 의미

:

data는 Laravel 사이의 지속적인 디렉토리의 목록입니다 릴리즈 :

current/ 
    \ storage/ 
     - framework 
      - session/ 
     - app/ 
     - logs/ 
     # Also in storage, but we do NOT want to persist 
     - debugbar/ 
     - framework/ 
      - cache/ 
      - views/ 

우리 data 디렉토리는 뜻이 :

data/ 
    \ storage/ 
     - framework/ 
      - session/ 
     - app/ 
     \ logs/ 

그들은에 매핑해야 우리가 사이트를 업데이트 할 때 응용 프로그램 시작 사이에 영구 저장소로 유지하면서 이전 버전의 사이트는 ev에 보관하십시오. 롤백 (current은 최신 릴리스에 대한 소프트 링크입니다.)

참고 : Laravel 이외의 사이트도 있습니다. data이 우리의 표준이 될 것이고, 우리는 사이트가 지속성을 위해 무엇을 필요로하는지에 따라 디렉토리 재구성과 일치시킬 것입니다. 항상 data/storage이되지는 않습니다.

+0

"재귀 적"이란 의미를 설명 할 수 있습니까? 'current/foo'에서'data/foo' (예를 들면) 링크를 만들었 으면, 모든 하위 디렉토리는 이미 링크를 통해 접근 할 수 있습니다. 추가 작업을 할 필요가 없습니다. – duskwuff

+0

@duskwuff - 이미 명백하게 만들었지 만 재발하지 마십시오. 당신은 간단하게''data -maxdepth 1 -type d -exec ln -s ../ {} 현재 \;' – alvits

+0

@duskwuff :'data/foo/bar' =>'current/foo/bar','data/foo/bartwo/play' =>'현재/foo/bartwo/play' – guice

답변

2

재귀를 수행 할 필요가 없습니다. 디렉토리에 링크하면 링크를 통해 그 아래의 모든 파일과 디렉토리에 액세스 할 수 있습니다.

는 최상위 수준의 디렉토리에있는 필요로하는 유일한 링크가

...

cd current 
ln -s ../data/*/ . 

또는 datacurrent 링크를 만들고, 사용자의 요구 사항에 따라서도 충분할 수 있습니다.

+0

틀렸어. 이제는 아무데도 가리 키지 않는 링크가있는 '현재'로 끝날 것입니다. 'cd current;를 시도해보십시오. ln -s ../data/*/ .'. – alvits

+0

@alvits 고마워요, 고침. (또는 단지'current'에 대한 절대 경로를 사용하십시오.) – duskwuff

+0

절대 경로는 확실히 작동 할 것입니다. 건배 :) – alvits