scpとrsyncでパスのケツスラッシュのありなしの挙動を毎回迷うのでメモ

scpとrsync、ケツにスラッシュがあるかないか毎回確認するのでメモしておく。
個人的にはscp使わないで rsync option from/ dist/
両方共ケツスラッシュ付けてやってる。

from/files_dirdist/files_dirに持って行きたい

% tree .
.
├── dist
└── from
    └── files_dir
        └── file

3 directories, 1 file
%

まとめ

PATH scp rsync
from/files_dir/ dist/ NG NG
from/files_dir dist/ NG OK
from/files_dir/ dist/files_dir/ OK OK
from/files_dir dist/files_dir OK NG
from/files_dir/ dist/files_dir OK OK
from/files_dir dist/files_dir/ OK NG

結論

scpもrsyncも明示的に送り元と送り先ディレクトリを指定して
ケツスラを付けようという話。


scp

持っていくディレクトリにケツスラあり

NG

% scp -r from/files_dir/ dist/
%
% tree .
.
├── dist
│   └── file
└── from
    └── files_dir
        └── file

3 directories, 2 files
%

持っていくディレクトリにケツスラなし

NG

% scp -r from/files_dir dist/
%
% tree .
.
├── dist
│   └── file
└── from
    └── files_dir
        └── file

3 directories, 2 files
%

持っていくディレクトリを明記してケツスラあり

OK

% scp -r from/files_dir/ dist/files_dir/
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files
%

持っていくディレクトリを明記してケツスラなし

OK

% scp -r from/files_dir dist/files_dir
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files
%

持っていくディレクトリを明記してもっていくディレクトリだけケツスラあり

OK

% scp -r from/files_dir/ dist/files_dir
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files
%

持っていくディレクトリを明記して送り先のディレクトリだけケツスラあり

OK

% scp -r from/files_dir dist/files_dir/
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files
%                                                                                                                                                                              [~/tmp/test]

rsync

持っていくディレクトリにケツスラあり

NG

% rsync -r from/files_dir/ dist/
%
% tree .
.
├── dist
│   └── file
└── from
    └── files_dir
        └── file

3 directories, 2 files
%

持っていくディレクトリにケツスラなし

OK

% rsync -r from/files_dir dist/
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files
%

持っていくディレクトリを明記してケツスラあり

OK

% rsync -r from/files_dir/ dist/files_dir/
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files
%

持っていくディレクトリを明記してケツスラなし

NG

% rsync -r from/files_dir dist/files_dir
%
% tree .
.
├── dist
│   └── files_dir
│       └── files_dir
│           └── file
└── from
    └── files_dir
        └── file

5 directories, 2 files
%

持っていくディレクトリを明記してもっていくディレクトリだけケツスラあり

OK

% rsync -r from/files_dir/ dist/files_dir
%
% tree .
.
├── dist
│   └── files_dir
│       └── file
└── from
    └── files_dir
        └── file

4 directories, 2 files

持っていくディレクトリを明記して送り先のディレクトリだけケツスラなし

NG

% rsync -r from/files_dir dist/files_dir/
%
% tree .
.
├── dist
│   └── files_dir
│       └── files_dir
│           └── file
└── from
    └── files_dir
        └── file

5 directories, 2 files
%