git clone https://github.com/vitalif/grive2 cd grive2
CMake 로는 다음 같이 빌드 환경을 구성한다
1 2 3
mkdir build cd build cmake ..
그리고 Make 로 다음 같이 빌드한다:
1
make -j4
그리고 설치한다:
1
sudo make install
Updates
소스는 git pull 로 최신 소스를 얻고 다시 빌드한다:
1 2 3 4 5 6
cd /path/to/yourGriveSourceCodeDir/grive2 git pull cd build cmake .. make -j4 sudo make install
Usage
인증
1 2 3 4 5 6 7 8 9 10
$ grive -a ----------------------- Please go to this URL and get an authentication code:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%....client_id=22314510474.apps.googleusercontent.com ----------------------- Please input the authentication code here: 5/dTdVFy9xBd2cKLYvkcvJlYhwfht4IPuyJdri2Vv3sKA Reading local directories Reading remote server file list
$ sudo apt-get install libcurl-dev Reading state information... Done Package libcurl-dev is a virtual package provided by: libcurl4-openssl-dev 7.38.0-4+deb8u5 libcurl4-nss-dev 7.38.0-4+deb8u5 libcurl4-gnutls-dev 7.38.0-4+deb8u5 You should explicitly select one to install.
$ onedrive -h Usage: onedrive [OPTION]... no option Sync and exit. -m --monitor Keep monitoring for local and remote changes. --resync Forget the last saved state, perform a full sync. -v --verbose Print more details, useful for debugging. -h --help This help information.
Device Start End Sectors Size Type /dev/sdb1 2048 8390655 8388608 4G Linux swap /dev/sdb2 8390656 125042654 116651999 55.6G Linux LVM
fdisk 결과의 Sector size는 전체 용량과 섹터 크기를 계산하면 논릭적인 섹터의 크기를 확인할 수 있다.
1 2
echo $((64021856256/125042688)) 512
Sector size (logical/physical): 512 bytes / 512 bytes 에서 물리 크기를 확인할 수 있다.
성능
dd 를 사용해서 1024 바이트를 1000000 블록에 걸쳐 쓰기를 수행한다 - 1GB
1
$ time sudo dd bs=1024 count=1000000 if=/dev/zero of=1GB_file
dd 를 사용해서 1GB 크기 파일을 1024 바이트씩 읽기를 한다.
1
$ time sudo dd bs=1024 if=1GB_file of=/dev/null
Verbose output
Sending an INFO signal to a running dd process makes it print I/O statistics to standard error and then resume copying. In the example below, dd is run in the background to copy 10 million blocks. The kill command makes it output intermediate I/O statistics, and when dd completes normally or is killed by the SIGINT signal, it outputs the final statistics.
1 2 3 4 5 6 7 8
$ dd if=/dev/zero of=/dev/null count=10MB & pid=$! $ kill -s INFO $pid; wait $pid 3385223+0 records in 3385223+0 records out 1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s 10000000+0 records in 10000000+0 records out 5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s
On systems lacking the INFO signal dd responds to the USR1 signal instead, unless the POSIXLY_CORRECT environment variable is set.
You can also try the status=progress option:
1 2 3 4 5 6
[~]$ dd if=/dev/zero of=/dev/null count=10MB status=progress 4708234752 bytes (4.7 GB, 4.4 GiB) copied, 4 s, 1.2 GB/s 10000000+0 records in 10000000+0 records out 5120000000 bytes (5.1 GB, 4.8 GiB) copied, 4.3516 s, 1.2 GB/s [~]$
$ file /bin/ls ELF 32-bit LSB executable, ARM, EABI5 version 1 .. ARM arm 7 is 32 bit. ARMv8-A, October 2011, 64-bit address space and 64-bit arithmetic 지원
rsync -e"ssh -c arcfour -o Compression=no" ...rest of rsync cmd...
TCP Optimization
MTU(Maximum Transmission Unit)
네트워크 인터페이스에서 세그먼트 없이 보낼수 있는 최대 데이터그램 크기 값입니다. 만약 데이터가 MTU 값 이상이라면 여러개의 패킷으로 분할이 될 것입니다. 간단하게 보자면 MTU 는 패킷이 한번에 보낼 수 있는 최대 크기라고 볼 수 있습니다.
이더넷의 MTU 값은 일반적으로 1500 바이트이며 옛날에 모뎀을 통해 접속하던 PPPoE 연결은 1492 바이트를 가지고 있습니다.
MTU 는 각 패킷 프레임안에 최대 전송할 수 있는 값 MSS(Maximum segment size) 가 정의되어 있습니다. 그렇다면 MTU는 MSS + TCP/IP 헤더 크기가 될 것이고 반대로 MSS 는 MTU - 40 바이트가 됩니다. 40 바이트는 IP 와 TCP 헤더 20 바이트씩을 뜻합니다.
에러 mount_osxfuse: the file system is not available (255)
There appears to be a problem loading the KEXT installed by the regular osxfuse Homebrew package. You can use brew cask to install the official FUSE for OS X build from their own DMG: