# dir_a 디렉토리 자체를 copy_a 안에 복사함
cp -rv "~/dir_a" "~/copy_a"
# dir_a 안의 파일, 서브디렉토리 모두 copy_a 로 복사. 단 숨김 파일/디렉토리는 복사 X
cp -rv "~/dir_a/*" "~/copy_a"
# dir_a 안의 파일, 서브디렉토리 모두 copy_a 로 복사 + 숨김 파일/디렉토리도 모두 복사
cp -rv "~/dir_a/." "~/copy_a"
rsync -av --exclude='node_modules' /mnt/c/frontend/ frontend
# /mnt/c/frontend/ 라는 외부 디렉토리의 내용을 모두 현재 경로의 frontend 디렉토리 안으로 옮긴다.
# 현재 디렉토리에서 java 파일을 재귀적으로 찾아냄
find "${PWD}" -type f -n "*.java"
# 현재 디렉토리에서 bck 디렉토리를 재귀적으로 찾아냄
find "${PWD}" -type d -n "*bck"
# "-maxdepth 1" 처럼 옵션을 줘서 재귀 depth 지정 가능
find . -type f -exec chmod 644 {} + # 모든 파일의 file permission 변경
find . -type d -exec chmod 755 {} + # 모든 디렉토리의 file permission 변경
# find "${PWD}" ~~ 처럼해도 좋음
참고
-exec 명령어 {} \;= 파일 하나씩 실행 (느림)
-exec 명령어 {} += 파일 여러 개 묶어서 실행 (빠름)# \; 사용 - 각 파일마다 개별 실행 find . -type f -name "*.txt" -exec echo "Processing:" {} \; # 출력: # Processing: file1.txt # Processing: file2.txt # Processing: file3.txt # + 사용 - 한 번에 실행 find . -type f -name "*.txt" -exec echo "Processing:" {} + # 출력: # Processing: file1.txt file2.txt file3.txt
# 일단 파일이 있는지 조회
ls ~/.ssh/id_rsa*
# 만약 위에서 조회됐다면 이 과정은 생략
ssh-keygen -t rsa
# 공개키 전송하여 원격서버 .ssh/authorized_keys 에 등록
ssh-copy-id 원격서버_계정@원격서버_HOST
# 이후에 비번없이 로그인
ssh 원격서버_계정@원격서버_HOST
# 참고: 만약에 AWS pem key 사용이면?
ssh -i "${PEM_KEY_경로}" 원격서버_계정@원격서버_HOST
# 꼭 pem 키가 이나더라도, client 단의 개인키가 .ssh/id_rsa 가 아니면
# 로그인할 때 -i 옵션을 줘야 한다.
참고하면 좋은 글 : SSH 공개키 인증을 사용하여 접속하기
touch ~/.ssh/config # 파일이 없다면 생성
chmod 600 ~/.ssh/config # 보안을 위한 file permission 변경
# 이후에 파일에 아래처럼 입력
vim ~/.ssh/config
내용은 아래와 같은 패턴으로 작성하면 된다.
Host server-alias
HostName 10.0.0.10
User dailycode
Port 2222
IdentityFile ~/.ssh/id_rsa_company
Host : 별칭, 와일드 카드 사용 가능HostName : 실제 원격서버 IP 혹은 도메인 명(ex: naver.com) User : 접속 계정 명Port : ssh 연결 포트IdentityFile : ssh client 의 개인키 경로그외에도
ServerAliveInterval :
연결 유지를 위해서 ssh 서버로 몇초마다 신호를 보낼지 지정
기본적으로는 0
ServerAliveCountMax:
만약에 신호를 보내게 되면 재시도 횟수를 얼마나 할지를 지정
기본으로 3. ServerAliveInterval 와 함께 사용했을 때 효력이 있음.
# tar.gz로 압축
tar -czf archive.tar.gz .
# 특정 디렉토리/파일 제외하면서 압축
tar -czf archive.tar.gz --exclude='*.log' .
# timestamp suffix 주기
tar -czf archive_$(date +%Y%m%d_%H%M%S).tar.gz .
# 압축 해제
tar -xzf archive.tar.gz
# zip 파일 압축
zip -r $(basename $PWD)_$(date +%Y%m%d_%H%M%S).zip .
# 몇가지 제외시키면서 압축하기
# 아래 예시는 .claude 디렉토리와 *.log 파일들 모두 제외하면서 압축하는 것
zip -r \
$(basename $PWD)_$(date +%Y%m%d_%H%M%S).zip . -x ".claude/*" -x "*.log"
# 압축 해제
unzip archive.zip -d /path/to/destination/
# 참고: 내용만 확인
# unzip -l archive.zip
# 자기자신의 비번 변경
passwd
# 다른 사용자 비번 변경
sudo passwd linux
cat *.xml | grep -c "<row>"