반응형

출처

https://serverfault.com/questions/394815/how-to-update-curl-ca-bundle-on-redhat

Redhat에서 cURL CA 번들 업데이트하는 방법?

저는 cURL이 기한이 지난 버전으로 CA 번들에 관한 문제가 있습니다.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

제가 필요한 것이나 어떻게 해야하는지 이해하지 못했기 때문에 문서를 읽는 것은 도움이 되지 않았습니다. 저는 CA 번들을 업데이트할 필요가 있고 Redhat에서 실행할 것입니다. 업데이트 Redhat에서 CA 번들을 업데이트 하려면 필요한 게 무엇이 있을까요?


7개의 답변 중 2개의 답변

RHEL 6 이상에서, 당신은 아래 답변에 lzap님이 설명한대로 update-ca-trust를 사용해야 합니다.

Fedora, CentOS, Redhat 이전버전 :

Curl은 /etc/pki/tls/certs/ca-bundle.crt에 저장된 시스템 기본 CA 번들을 사용합니다. 이것을 변경하기 전에 만약 필요하다면 시스템 기본값으로 복구할 수 있도록 이 파일의 복사본을 만드세요. 당신은 파일에 새로운 CA 인증서를 추가하거나 전체 번들을 대체할 수 있습니다.

인증서를 얻는 곳에 대해 궁금하십니까? 저는 curl.se/ca를 추천합니다. 다음 한 줄이면 됩니다.

curl https://curl.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Fedora Core 2 위치는 /usr/share/ssl/certs/ca-bundle.crt 입니다.


lzap 답변

RHEL 6+ 시스템에서 할 수 있는 추천하는 방법은 기본으로 설치된 update-ca-trust 툴을 사용하는 것입니다.

# cat /etc/pki/ca-trust/source/README 
This directory /etc/pki/ca-trust/source/ contains CA certificates and 
trust settings in the PEM file format. The trust settings found here will be
interpreted with a high priority - higher than the ones found in 
/usr/share/pki/ca-trust-source/.

=============================================================================
QUICK HELP: To add a certificate in the simple PEM or DER file formats to the
            list of CAs trusted on the system:

            Copy it to the
                    /etc/pki/ca-trust/source/anchors/
            subdirectory, and run the
                    update-ca-trust
            command.

            If your certificate is in the extended BEGIN TRUSTED file format,
            then place it into the main source/ directory instead.
=============================================================================

Please refer to the update-ca-trust(8) manual page for additional information

따라서 crt 파일을 /etc/pki/ca-trust/source/anchors/에 드롭하고 도구를 실행하기만 하면 됩니다. 이 작업은 안전하며 백업을 수행할 필요가 없습니다. 전체 매뉴얼 페이지는 https://www.mankier.com/8/update-ca-trust에서 찾을 수 있습니다.

반응형
반응형

출처 : https://www.educba.com/zip-command-in-linux/

Linux에서 Zip 명령 소개

ZIP은 Unix에서 파일 압축 기술 패키징 유틸리티 입니다. 파일은 확장자 .zip으로 하나의 파일에 저장됩니다. Linux에서 Zip 명령은 MSDOS, OS/2, Window NT, Minix, 매킨토시 등과 같은 거의 모든 운영 체제에 의해 주로 지원됩니다. 압축과 tar는 명령어로 사용되며 PKZIP(MSDOS 시스템을 위한 Phil Katz의 ZIP)와 호환됩니다.

문법:

zip [몇가지 옵션]  zip파일 파일디렉터리/파일목록

zip파일은 새로운 혹은 이미 존재하는 zip 압축이며 파일디렉터리/파일목록은 와일드카드를 포함하는 경로입니다. zip 압축과 같은 이름이 발견되면 그것을 갱신할 것입니다.

예시: 만약 폴더/파일_1과 폴더/파일_2가 folder.zip에 포함되어 있고 디렉터리 폴더는 폴더/파일_1과 폴더/파일_3을 포함 합니다. 그렇다면 명령을 실행하기 전에 folder.zip은 다음 파일이 있습니다.

  • 폴더/파일_1
  • 폴더/파일_2

디렉터리 폴더는 다음 파일이 있습니다.

  • 파일_1
  • 파일_3

명령을 실행하면 folder.zip은 다음 파일을 가지고 있습니다.

  • 폴더/파일_1
  • 폴더/파일_2
  • 폴더/파일_3

폴더/파일_1은 교체되며 폴더/파일_3은 새로운 파일입니다. 그래서, folder.zip은 폴더/파일_1, 폴더/파일_2, 폴더/파일_3을 포함하며 폴더/파일_2는 이전과 변화되지 않습니다.

Linux에서 Zip 파일 압축풀기 문법

명령은 Unix 시스템에서 압축으로부터 파일의 압축을 풉니다. 아무런 옵션이 없을 때 특정 ZIP 압축파일로부터 현재 작업 디렉터리(와 그 안에 하위 디렉터리)로 그것의 압축을 풉니다.

문법:

$unzip fold.zip

Linux에서 Zip 명령 옵션

이제 아래의 Zip 명령 옵션에 집중해 봅시다.

1) -u 옵션

파일을 갱신합니다. 이는 압축에서 기존 엔트리도 갱신하며 이미 있는 버전보다 더 많이 수정된 경우에만 갱신됩니다.

명령:

$zip -u 파일명.zip 파일.txt

현재 디렉터리에 아래와 같은 파일이 있다 가정합니다.

  • 파일1.txt
  • 파일2.txt
  • 파일3.txt
  • 파일4.txt

문법:

$zip –u 파일명.zip 파일5.txt

파일명.zip으로부터 파일5.txt를 갱신한 후, unzip 명령으로 파일을 복구할 것입니다.

명령:

$unzip file_name.zip
$ls command

출력:

  • 파일1.txt
  • 파일2.txt
  • 파일3.txt
  • 파일4.txt
  • 파일5.txt

파일5.txt는 zip로 갱신되었습니다.

2) -d 옵션

zip 압축으로부터 파일을 삭제합니다. 이 옵션은 생성된 파일을 삭제합니다. 현재 디렉터리에 다음 파일이 있습니다.

문법:

$zip –u 파일명.zip 파일.txt

명령:

$zip –d file_name.zip file5.txt

파일명.zip으로부터 파일5.txt를 삭제한 후 unzip 명령으로 파일을 복구할 것입니다.

명령:

$unzip file_name.zip
$ls command

출력:

  • 파일1.txt
  • 파일2.txt
  • 파일3.txt
  • 파일4.txt
  • 파일5.txt

파일5.txt는 zip 파일로부터 삭제되었습니다.

3) -m 옵션

zip 압축 후에 original/main 파일을 삭제할 것입니다. zip을 만들고 원래 파일/폴더를 삭제함으로써 파일을 옮길 것입니다.

디렉터리가 파일을 삭제한 후 비어 있으면 해당 디렉토리도 함께 삭제됩니다. zip이 오류 없이 압축을 생성할 때까지 삭제가 완료되지 않습니다. 따라서 이것은 디스크 공간을 유지하는 데 유용하지만 모든 입력 파일을 제거하는 동안 궁극적으로 안전하지 않습니다.

문법:

$zip –m 파일명.zip 파일.txt

아래처럼 현재 디렉터리에 다음 파일이 있다고 가정합니다.

파일_1.txt,파일_2.txt,파일_3.txt,파일_4.txt

명령:

$zip -m 파일명.zip *.txt

터미널의 이 명령을 실행한 후에 결과는 다음과 같습니다.

명령:

$ls command

출력:

  • 파일명.zip
  • // txt(확장자)인 다른 파일은 발견되지 않습니다.

4) -x 옵션

zip을 만들 때 파일을 제외합니다. 현재 디렉토리에 있는 모든 파일을 압축하고 필요하지 않은 몇 개의 파일을 제외하려고 한다고 가정해 보겠습니다. 따라서 -x 옵션을 사용하여 필요하지 않은 이러한 파일을 제외할 수 있습니다.

문법:

$zip –m 파일명.zip 제외될파일.txt

아래처럼 현재 디렉터리에 다음 파일이 있다고 가정합니다.

파일_1.txt,파일_2.txt,파일_3.txt,파일_4.txt

명령:

$zip –x 파일명.zip 파일_3.txt

이 명령은 파일_3.txt 제외하고 모든 파일을 압축할 것입니다.

명령:

$ls command

출력:

  • 파일명.zip // 압축된 파일
  • 파일_3.txt // 압축하는 동안 제외된 파일

5) -r 옵션

재귀적으로 zip을 그 안에 폴더까지 만들 것입니다.

문법:

$zip –r 파일명.zip 디렉터리명

아래처럼 현재 디렉터리 (doc)에 다음 파일이 있다고 가정합니다.

  • a.pdf
  • b.pdf
  • c.pdf

명령:

$zip –r filedir.zip doc

이 명령은 파일_3.txt 제외하고 모든 파일을 압축할 것입니다.

출력:

  • adding: doc/ // 디렉터리 압축
  • adding: doc/a.pdf // 첫 번째 파일 압축
  • adding: doc/b.pdf // 두 번째 파일 압축
  • adding: doc/c.pdf // 번째 파일 압축

6) -v 옵션

자세히(Verbose) 모드 옵션을 사용하여 우리는 분석 정보를 출력할 것입니다. 이 옵션은 압축 도중에 진행상황 표시를 보여주며 zip 구조에 관한 자세한 정보를 요청합니다.

문법:

$zip –v 파일명.zip 파일.txt

아래처럼 현재 디렉터리에 다음 파일이 있다고 가정합니다.

파일_1.txt,파일_2.txt,파일_3.txt,파일_4.txt

명령:

$zip -v file1.zip *.txt

출력:

  • adding: file_1.txt (in=0) (out=0) (stored 0%)

  • adding: file_2.txt (in=0) (out=0) (stored 0%)

  • adding: file_3.txt (in=0) (out=0) (stored 0%)

  • adding: file_4.txt (in=0) (out=0) (stored 0%)

  • total bytes=0, compressed=0 -> 0% savings

Linux의 Zip 명령 사용

Linux의 Zip 명령 사용은 다음과 같습니다.

  • ZIP은 적은 대역폭이나 인터넷 속도가 느릴 때 완벽한 기술이며 당신은 파일 여러개를 전송할 수 있습니다. 그리고 이제 이 명령을 사용하여 당신은 매우 효과적인 방법으로 파일을 압축하고 전송할 수 있습니다.
  • zip 프로그램은 하나 그 이상의 압축된 파일을 이름, 경로, 날짜, 마지막 수정시간, 보호, 파일 무결성을 검증하기 위한 체크 정보와 함께 하나의 zip으로 압축합니다. 전체 디렉터리 구조는 명령 하나로 하나의 zip 압축될 수 있습니다.
  • 압축률이 2:1에서 3:1로 텍스트 파일이 일반적이기 때문에 디플레이션 방식을 사용하거나 압축하지 않고 파일을 저장합니다. 그러면 압축할 각 파일에 가장 적합한 것이 자동으로 선택됩니다.
  • 파일 보관에 매우 편리합니다. 사용하지 않는 파일이나 디렉터리를 압축하여 짧은 시간 동안 배포 및 디스크 공간 절약을 위해 파일 세트를 패키징합니다.

결론

이제 우리는 압축풀기(unzip)와 압축하기(zip)의 개념을 이해하였고 다른 옵션을 사용하여 압축된 파일을 조작하는 방법을 알았습니다. ZIP은 파일 여러개를 전송하기 원하거나 낮은 대역폭이나 인터넷 속도가 느릴 때 완벽한 기술입니다. 이제 이 명령을 사용하여 당신은 zip으로 압축하여 매우 효율적인 방법으로 파일을 전송할 수 있습니다.

반응형
반응형

출처
https://serverfault.com/questions/7689/how-do-i-get-rid-of-sockets-in-fin-wait1-state

FIN_WAIT1 상태를 소켓에서 어떻게 제거하나요?

kill이 필요한 프로세스에 의해 차단된 포트가 있습니다. (충돌한 telnet 대몬). 프로세스가 성공적으로 종료되었지만 포트는 여전히 'FIN_WAIT1' 상태입니다. 그것은 나오지 않으며, 그 시간 초과는 '십년'으로 설정된 것 같습니다.

포트를 해제할 수 있는 유일한 방법은 전체 시스템을 재부팅하는 것인데, 이는 당연히 하고 싶지 않은 일입니다.

$ netstat -tulnap | grep FIN_WAIT1 
tcp        0  13937 10.0.0.153:4000         10.0.2.46:2572 

리부팅 없이 블록되지 않도록 포트를 처리하는 방법에 대해 아시는 분 있나요?


9개의 답변 중 1개의 답변

# tcp_max_orphans의 현재 값을 기록
original_value=$(cat /proc/sys/net/ipv4/tcp_max_orphans)

#tcp_max_orphans를 임시로 0 으로 설정
echo 0 > /proc/sys/net/ipv4/tcp_max_orphans

# /var/log/messages 확인
# 그것은 "kernel: TCP: too many of orphaned sockets"를 뱉어낼 것입니다.
# 접속이 없어지는 데 오래 걸리지 않을 것입니다. 

# 이전에 있던 tcp_max_orphans 의 값을 복구합니다.
echo $original_value > /proc/sys/net/ipv4/tcp_max_orphans

# 다음으로 검증합니다.
netstat -an|grep FIN_WAIT1
반응형
반응형

출처 : https://stackoverflow.com/questions/29244351/how-to-sort-a-file-in-place/29244387

파일 자체를 정렬하는 방법

sort file 명령을 사용할 때, 파일의 내용을 정렬하여 보여줍니다. 어떤 종류의 출력이 아니라 정렬된 파일을 원하는 데 어떻게 해야 합니까?


7개 답변 중 1개

당신은 정렬된 출력으로 파일 redirection을 사용할 수 있습니다.

sort input-file > output_file
sort 입력파일 > 출력파일

아니면 당신은 -o, --output=FILE 옵션을 같은 입력과 출력 파일을 가리키며 정렬하여 사용할 수 있습니다.

sort -o file file
sort -o 파일 파일

파일 이름을 반복하지 않고 ( bash 중괄호 확장 으로 )

sort -o file{,}
sort -o 파일{,}

참고: 일반적인 실수는 출력을 동일한 입력 파일로 redirect 하는 것입니다(예: sort file > file). 이것은 쉘이 redirection(sort(1) 프로그램이 아님)을 하고 있기 때문에 작동하지 않으며, sort(1) 프로그램에 읽을 기회를 주기 직전에 입력 파일(출력이기도 함)이 지워집니다.

반응형
반응형

출처 : https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

Rsync (원격 동기화): 리눅스에서 Rsync 명령의 10가지 실용적인 예시

Rsync (원격 동기화)리눅스/유닉스 시스템에서 로컬 뿐만이 아니라 원격으로 파일과 디렉터리를 복사하고 동기화하는데 가장 보편적으로 사용되는 명령입니다. rsync 명령의 도움으로 당신은 당신의 데이터를 로컬과 원격으로 디렉터리, 디스크, 네트워크 상에서 복사하고 동기화할 수 있고 두 리눅스 머신 간에 백업과 미러링을 할 수 있습니다.

이 글은 파일을 리눅스 기반의 머신에서 로컬과 원격으로 파일을 전송하는 rsync 명령의 10개의 기본적이고 고급 사용법을 설명합니다. rsync 명령을 실행하는 데 root 사용자일 필요는 없습니다.

Rsync 명령의 장점과 특징

  • 원격 시스템부터 또는 원격으로 파일을 효율적으로 복사하고 동기화 합니다.
  • 링크, 장치, 소유자, 그룹, 권한 복사를 지원합니다.
  • rsync는 파일의 두 집합 사이에 차이점만 전송하는 원격 갱신 프로토콜을 사용하기 때문에 scp (Secure Copy) 보다 빠릅니다. 처음에는 파일 또는 디렉토리의 전체 내용을 소스에서 대상으로 복사하지만 다음부터는 변경된 블록과 바이트만 대상으로 복사합니다.
  • Rsync는 압축 및 압축 해제 방식을 사용하여 데이터를 송수신하면서 대역폭을 덜 소모합니다.

rsync 명령의 기본 문법

# rsync 옵션 원본 대상
# rsync options source destination

명령에서 사용되는 몇 가지 공통 옵션

  • -v : 자세한 설명 출력
  • -r : 데이터를 재귀적으로 복사합니다(그러나 데이터를 전송하는 동안 타임스탬프와 권한을 유지하지 않습니다.)
  • -a : 아카이브 모드, 아카이브 모드는 파일을 재귀적으로 복사할 수 있으며 심볼릭 링크, 파일 권한, 사용자 및 그룹 소유권 및 타임스탬프도 보존합니다.
  • -z : 파일 데이터 압축
  • -h : 사람이 읽을 수 있는 형식의 출력 숫자

추천 읽기: 비표준 SSH 포트와 함께 Rsync를 사용하여 파일/디렉토리를 동기화하는 방법

리눅스 머신에서 rsync 설치하기

다음 명령으로 rsync 패키지를 설치할 수 있습니다.

# yum install rsync (Red Hat 기반 시스템에서)
# apt-get install rsync (On Debian 기반 시스템에서)

1. 로컬에서 파일과 디렉터리 복사/동기화 하기

로컬 컴퓨터에서 파일 복사/동기화 하기

다음 명령어는 로컬에서 한 위치에서 다른 위치로 하나의 파일을 동기화할 것입니다. 여기 이 예시에서 파일 이름 backup.tar/tmp/backups 폴더로 복사되거나 동기화될 것입니다.

[root@tecmint]# rsync -zvh backup.tar /tmp/backups/

created directory /tmp/backups

backup.tar

위 예시에서 목적지(/tmp/backups)가 아직 없다면 rsync는 자동으로 목적지에 디렉터리를 만들 것입니다.

로컬 컴퓨터에서 디렉터리 복사/동기화 하기

다음 명령어는 같은 머신에서 한 디렉터리에서 다른 디렉터리로 모든 파일을 동기화하거나 전송할 것입니다. 여기 이 예시에서 /root/rpmpkgs는 몇 개의 rpm 패키지 파일을 포함하며 /tmp/backups 폴더로 복사될 것입니다.

[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 4.99M bytes  received 92 bytes  3.33M bytes/sec

total size is 4.99M  speedup is 1.00

2. 서버에서 또는 서버로 파일과 디렉터리 복사/동기화 하기

로컬 서버에서 원격 서버로 디렉터리 복사하기

이 명령은 로컬 머신에서 원격 머신으로 디렉터리를 동기화 합니다. 예시: 로컬 컴퓨터에 몇개의 RPM 패키지를 포함하는 "rpmpkg" 폴더가 있습니다. 로컬 디렉터리의 내용을 원격서버로 보내고 싶으시면, 다음 명령을 사용할 수 있습니다.

[root@tecmint]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/

root@192.168.0.101's password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

nagios-3.5.0.tar.gz

nagios-plugins-1.4.16.tar.gz

sent 4993369 bytes  received 91 bytes  399476.80 bytes/sec

로컬 서버에서 원격 서버로 디렉터리의 특정 파일만 복사하기(역자추가)

여기 예시로 로컬 컴퓨터에 몇개의 RPM 패키지를 포함하는 "rpmpkg" 폴더가 있습니다. 로컬 디렉터리의 확장자가 rpm인 파일만을 원격서버로 보내고 싶으시면, 다음 명령을 사용할 수 있습니다.

[root@tecmint]$ rsync -avz rpmpkgs/*.rpm root@192.168.0.101:/home/

root@192.168.0.101's password:

sending incremental file list

./

httpd-2.2.3-82.el5.centos.i386.rpm

mod_ssl-2.2.3-82.el5.centos.i386.rpm

sent ? bytes  received ? bytes  ? bytes/sec

원격 디렉터리를 로컬 머신으로 복사/동기화 하기

이 명령은 당신이 원격 디렉터리를 로컬 디렉터리로 동기화 하도록 도움을 줄 것입니다. 여기 예시로 원격서버에 있는 디렉터리 /home/tarunika/rmpkgs는 당신의 로컬 컴퓨터의 /tmp/myrpms로 복사될 것입니다.

[root@tecmint]# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms

root@192.168.0.100's password:

receiving incremental file list

created directory /tmp/myrpms

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

rpmpkgs/nagios-3.5.0.tar.gz

rpmpkgs/nagios-plugins-1.4.16.tar.gz

sent 91 bytes  received 4.99M bytes  322.16K bytes/sec

total size is 4.99M  speedup is 1.00

3. SSH를 통한 RSync

rsync로 우리는 데이터 전송을 위해 SSH (Secure Shell) 을 사용할 수 있습니다. SSH 프로토콜을 사용하면 데이터가 전송되는 동안 아무도 읽을 수 없도록 암호화된 보안 연결로 데이터가 인터넷의 유선을 통해 전송되고 있음을 확인할 수 있습니다.

또한 우리가 rsync를 사용할 때 특정한 작업을 성공하기 위해 user/root 비밀번호를 제공할 필요가 있습니다. SSH 옵션을 사용하여 암호화된 방법으로 로그인하여 전송할 수 있고 당신의 비밀번호는 안전할 것입니다.

SSH로 원격 서버에서 로컬 서버로 파일 복사하기

rsync로 프로토콜을 지정하기 위해 "-e" 옵션을 당신이 사용하기 원하는 프로토콜 이름을 함께 제공할 필요가 있습니다. 여기 예시에서 "-e" 옵션으로 "ssh" 를 사용하여 데이터 전송을 수행할 것입니다.

[root@tecmint]# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/

root@192.168.0.100's password:

receiving incremental file list

install.log

sent 30 bytes  received 8.12K bytes  1.48K bytes/sec

total size is 30.74K  speedup is 3.77

SSH로 로컬 서버에서 원격 서버로 파일 복사하기

[root@tecmint]# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/

root@192.168.0.100's password:

sending incremental file list

backup.tar

sent 14.71M bytes  received 31 bytes  1.28M bytes/sec

total size is 16.18M  speedup is 1.10

추천 읽기: 리눅스에서 새로운 또는 변경/수정된 파일을 동기화하기 위해 Rsync 사용하기

4. rsync로 데이터 전송하는 동안 진행상태 보기

하나의 머신에서 다른 머신으로 데이터가 전송되는 동안 진행상태를 보기 위해 우리는 '--progress' 옵션을 사용할 수 있습니다. 이것은 파일과 전송을 완료하는 데 남은 시간을 표시합니다.

[root@tecmint]# rsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs

root@192.168.0.100's password:

sending incremental file list

created directory /root/rpmpkgs

rpmpkgs/

rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm

           1.02M 100%        2.72MB/s        0:00:00 (xfer#1, to-check=3/5)

rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm

          99.04K 100%  241.19kB/s        0:00:00 (xfer#2, to-check=2/5)

rpmpkgs/nagios-3.5.0.tar.gz

           1.79M 100%        1.56MB/s        0:00:01 (xfer#3, to-check=1/5)

rpmpkgs/nagios-plugins-1.4.16.tar.gz

           2.09M 100%        1.47MB/s        0:00:01 (xfer#4, to-check=0/5)

sent 4.99M bytes  received 92 bytes  475.56K bytes/sec

total size is 4.99M  speedup is 1.00

5. --include 와 --exclude 옵션 사용하기

이 두 가지 옵션을 사용하면 매개변수를 지정하여 파일을 포함제외할 수 있습니다. 이 옵션은 동기화에 포함할 파일 또는 디렉터리를 지정하고 전송을 원하지 않는 파일 및 폴더를 제외하는 데 도움이 됩니다.

여기 예시로 rsync 명령은 'R' 로 시작하는 파일이나 디렉터리를 포함하며 모든 다른 파일과 디렉터리는 제외될 것입니다.

[root@tecmint]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm

root@192.168.0.101's password:

receiving incremental file list

created directory /root/rpm

./

Requirename

Requireversion

sent 67 bytes  received 167289 bytes  7438.04 bytes/sec

total size is 434176  speedup is 2.59

6. --delete 옵션 사용하기

파일 또는 디렉토리가 원본에 없지만 대상에는 이미 존재하는 경우 동기화하는 동안 대상에서 기존 파일/디렉토리를 삭제할 수 있습니다.

'-delete' 옵션을 사용하여 원본 디렉토리에 없는 파일을 삭제할 수 있습니다.

원본와 대상은 동기화 됩니다. 이제 대상에서 새 파일 test.txt가 만들어 집니다.

[root@tecmint]# touch test.txt
[root@tecmint]# rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

대상에는 test.txt((라는 새 파일이 있으며 **'–delete' 옵션으로 소스와 동기화하면 test.txt 파일이 제거됩니다.

7. 전송될 파일의 최대 크기 설정

전송되거나 동기화될 파일의 (최대) 크기를 지정할 수 있습니다. "--max-size" 옵션과 함께 최대 크기를 지정할 수 있습니다. 여기 예시로 최대 파일 크기는 200k 이며, 이 명령은 200k 보다 같거나 작은 파일만 전송할 것입니다.

[root@tecmint]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpm

root@192.168.0.100's password:

sending incremental file list

created directory /root/tmprpm

./

Conflictname

Group

Installtid

Name

Provideversion

Pubkeys

Requireversion

Sha1header

Sigmd5

Triggername

__db.001

sent 189.79K bytes  received 224 bytes  13.10K bytes/sec

total size is 38.08M  speedup is 200.43

8. 성공적인 전송 후에 원본 파일 자동으로 지우기

메인 웹 서버와 데이터 백업 서버가 있다고 가정하면, 매일 백업을 생성하고 당신의 백업서버로 동기화 하면 이제 당신의 웹 서버에 있는 백업의 로컬 복제본은 유지하고 싶지 않을 것입니다.

그럼, 파일 전송 완료될 때까지 기다렸다가 수동으로 이 로컬 백업을 삭제해야 할까요? 당연히 아닙니다. 이 자동 삭제는 '--remove-source-files' 옵션을 사용하여 할 수 있습니다.

[root@tecmint]# rsync --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 14.71M bytes  received 31 bytes  4.20M bytes/sec

total size is 16.18M  speedup is 1.10

[root@tecmint]# ll backup.tar

ls: backup.tar: No such file or directory

9. rsync로 모의테스트 하기

당신이 초보자이고 rsync를 사용하고 있고 당신의 명령이 정확히 무엇을 하는지 모르는 경우 Rsync는 대상 폴더의 항목을 실제로 엉망으로 만들 수 있으며 실행 취소를 수행하는 것은 지루한 작업이 될 수 있습니다.

추천 읽기: Rsync 사용하여 두 웹 서버/웹 사이트를 동기화 하는 방법

이 옵션을 사용하면 아무 것도 변경되지 않고 명령의 테스트 실행만 수행하고 명령의 출력이 표시됩니다. 출력이 원하는 것과 정확히 일치하면 명령에서 '-dry-run' 옵션을 제거하고 명령의 출력을 표시할 수 있습니다. 터미널에서 실행합니다.

root@tecmint]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/

backup.tar

sent 35 bytes  received 15 bytes  100.00 bytes/sec

total size is 16.18M  speedup is 323584.00 (DRY RUN)

10. 대역폭 제한을 설정하고 파일 전송하기

당신은 '–bwlimit' 옵션의 도움으로 한 머신에서 다른 머신으로 데이터를 전송하는 동안 대역폭을 설정할 수 있습니다. 이 옵션은 입출력(I/O) 대역폭을 제한하도록 우리에게 도움을 줍니다.

[root@tecmint]# rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.100:/root/tmprpm/
root@192.168.0.100's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

또한 기본적으로 rsync는 변경된 블록과 바이트만 동기화합니다. 명시적으로 전체 파일을 동기화하려면 '-W' 옵션을 사용합니다.

[root@tecmint]# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10

이제 rsync에 알아 보았고 더 많은 옵션에 대한 매뉴얼 페이지에서 볼 수 있습니다. 앞으로 더 흥미롭고 흥미로운 튜토리얼을 위해 Tecmint와 계속 연결하십시오. 귀하의 의견과 제안을 남겨주세요.

반응형
반응형

CentOS6에서 gradle을 설치할 일이 있어서 다음 주소들을 참고하여 shell 스크립트를 만들었습니다 :)
참고

Gradle 설치

  • install-gradle-centos.sh
    • root 계정에서 다음 스크립트를 실행하여 설치하였습니다.
# installs to /opt/gradle
# existing versions are not overwritten/deleted
# seamless upgrades/downgrades
# $GRADLE_HOME points to latest *installed* (not released)
gradle_version=3.4.1
wget -N https://services.gradle.org/distributions/gradle-${gradle_version}-all.zip
unzip gradle-${gradle_version}-all.zip -d /opt/gradle
ln -sfn gradle-${gradle_version} /opt/gradle/latest
printf "export GRADLE_HOME=/opt/gradle/latest\nexport PATH=\$PATH:\$GRADLE_HOME/bin" > /etc/profile.d/gradle.sh
. /etc/profile.d/gradle.sh
# check installation
gradle -v
반응형
반응형

출처

https://stackoverflow.com/questions/10856447/sed-command-find-and-replace-in-even-lines-of-a-file


sed에서 파일의 짝수 줄만 찾아 치환하는 명령

저는 이 stackoverflow에서 신입입니다. 저는 SED를 사용하여 파일의 짝수 줄만 표현식으로 치환하고 싶습니다. 제 문제는 원래 파일의 변화는 원래 파일에서 변한 내용을 저장하는 방법을 생각할 수 없다는 점입니다. (예: 파일에서 변한 내용을 덮어쓰는 방법) 저는 다음을 시도해 보았습니다.

sed -n 'n;p;' filename | sed 's/aaa/bbb/'

하지만 이는 변한 내용을 저장할 수 없습니다. 이에 대한 당신의 도움에 감사드립니다.

------

4개의 답변 중 1 개의 답변만 추려냄.

다음을 시도하세요.

sed -i '2~2 s/aaa/bbb/' filename

-i 옵션은 sed에게 해당 filename에서 작동하도록 표준출력(stdout)으로 수정된 버전을 쓰지 않고 즉 원래 파일을 나두지 않고 파일의 변경 내용을 적용하도록 합니다. 2~2부분은 명령어를 통해 적용되어야 할 sed의 줄(라인)에 대한 주소입니다. 2~2는 짝수 줄만 편집(수정)함을 의미합니다. 1~2는 홀수 줄만 편집(수정)함을 의미합니다. 5~6는 6줄마다 편집(수정)하고 5번째 줄부터 시작합니다.

-- 역자 추가 내용--

참고주소

https://www.gnu.org/software/sed/manual/html_node/Addresses.html


반응형
반응형

출처 : https://stackoverflow.com/questions/4585929/how-to-use-cp-command-to-exclude-a-specific-directory

특정 디렉터리를 제외하고 'cp' 명령 사용하는 방법

저는 특정 하위 디렉터리(sub-directory)에서 몇 개의 파일을 제외하고 그 디렉터리의 모든 파일을 복사하고 싶습니다. 저는 cp 명령어는 --exclude 옵션이 없는 것을 알게 되었습니다. 이를 어떻게 할 수 있을까요?

19개 답변 중 1개

rsync는 빠르고 쉽습니다.

rsync -av --progress sourcefolder /destinationfolder --exclude thefoldertoexclude
rsync -av --progress 원본폴더 /대상폴더 --exclude 제외할폴더

당신은 --exclude를 여러번 사용할 수 있습니다.

rsync -av --progress sourcefolder /destinationfolder --exclude thefoldertoexclude --exclude anotherfoldertoexclude
rsync -av --progress 원본폴더 /대상폴더 --exclude 제외할폴더 --exclude 또다른제외할폴더

--exclude 뒤의 폴더에 thefoldertoexclude 디렉터리는 sourcefolder, 즉 sourcefolder / thefoldertoexclude와 관련이 있습니다.

또한 실제 명령을 실행하기 전에 무엇이 복사되는 지 보기만 하려면 -n을 추가할 수 있고 괜찮다면 명령줄에서 -n을 제거하면 됩니다.

반응형
반응형

출처

https://unix.stackexchange.com/questions/223543/get-the-date-of-last-months-last-day-in-a-shell-script


shell 스크립트에서 지난 달의 마지막 날짜 구하기

어떻게 처리할 날짜에 기반하여 지난 달의 날짜를 구할 수 있습니까?

예시:

* 처리할 날짜 = 15jan2015, 2015년 1월 15일

* 예상 날짜 = 31dec2014, 2014년 12월 31일

* 처리할 날짜 = 15feb2015, 2015년 2월 15일

* 예상 날짜 = 31Jan2015, 2015년 1월 31일

------

4개의 답변 중 1개의 답변만 추려냄.

GNU의 date로 

몇 가지 shell은 날짜 조작 지원이 내장되어 있습니다.

$ date +%d%b%Y
16Aug2015
$ date -d "$(date +%Y-%m-01) -1 day" +%d%b%Y
31Jul2015

ksh93로 

$ printf "%(%d%b%Y)T\n" "1st day, yesterday"
31Jul2015

zsh로 

$ zmodload zsh/datetime
$ strftime -s d %Y-%m-01-12 $EPOCHSECONDS
$ strftime -rs d %Y-%m-%d-%H $d
$ strftime %d%b%Y $((d-86400))
31Jul2015


반응형
반응형
출처 

https://unix.stackexchange.com/questions/3586/what-do-the-numbers-in-a-man-page-mean

man 페이지에 숫자들은 무엇입니까?

예를 들면, 제가 man ls를 쳤을 때 저는 LS(1)볼 수 있습니다. 하지만 man apachectl을 쳤을 때 APACHECTL(8)을 볼 수 있었고 man cd를 쳤다면 cd(n)로 끝났습니다.

저는 괄호 안에 숫자의 의미가 무엇인지 궁금합니다.

 

------

8개의 답변 중 1 개의 답변만 추려냄.

 

숫자는 페이지의 매뉴얼이 무슨 섹션인가를 뜻합니다. 1은 사용자 명령이고 8은 시스템 관리 도구입니다. man 페이지 그 자체(man man )는 이를 설명하고 그 표준을 보여줍니다.

매뉴얼 섹션매뉴얼의 표준 섹션은 다음을 포함합니다.1 사용자 명령2 시스템 콜3 C 라이브러리 함수4 장치와 특별한 파일5 파일 포멧과 규칙6 게임 외7 기타8 시스템 관리 도구 및 대몬매뉴얼 배포는 추가적인 섹션을 주로 포함하는 그 세부사항에 대한 매뉴얼 섹션을 사용자 정의합니다.

다른 섹션에 특정 용어가 있을 수 있습니다. (예 섹션 1에 shell 명령으로

printf

와 섹션 3에

stdlib

 라이브러리 함수로써 printf) 이런 경우 man 명령어에 섹션 번호를 전달하여 원하는 것을 선택하거나 man -a를 사용하여 일치하는 모든 페이지를 연속으로 표시할 수 있습니다.

$ man 1 printf $ man 3 printf $ man -a printf

man -k (apropos 명령과 같음)를 통해 용어가 어느 섹션에 속하는지 물어볼 수 있습니다. 이는 부분문자열이 일치 하더라도 찾을 것입니다. (

man -k printf

를 실행한다면 sprintf를 보여줄 것입니다.) 그래서 이를 제한하려면

^용어

를 사용해야 합니다.

$ man -k '^printf' printf (1) - format and print data printf (1p) - write formatted output printf (3) - formatted output conversion printf (3p) - print formatted output printf [builtins] (1) - bash built-in commands, see bash(1)

섹션에는 때때로 하위 섹션이 포함될 수 있습니다 (예 : 위의 1p 및 3p의 p). p 하위 섹션은 POSIX 사양을 위한 것입니다. x 하위 섹션은 X Window System 문서 용입니다.

반응형

+ Recent posts