📄 mnt-excl
字号:
#!/usr/bin/perl -w# This script takes a command-line arg of a source directory# that will be passed to rsync, and generates a set of excludes# that will exclude all mount points from the list. This is# useful if you have "bind" mounts since the --one-file-system# option won't notice the transition to a different spot on# the same disk. For example:## mnt-excl /dir | rsync --exclude-from=- ... /dir /dest/# mnt-excl /dir/ | rsync --exclude-from=- ... /dir/ /dest/# ssh host mnt-excl /dir | rsync --exclude-from=- ... host:/dir /dest/## Imagine that /dir/foo is a mount point: the first invocation of# mnt-excl would have output /dir/foo, while the second would have# output /foo (which are the properly anchored excludes).## NOTE: This script expects /proc/mounts to exist, but could be# easily adapted to read /etc/mtab or similar.## ADDENDUM: The addition of the --filter option (which has support for# absolute-anchored excludes) has made this script less useful than it# was. Beginning with 2.6.4, you can achieve the effect of this script# through this command:## awk '{print $2}' /proc/mounts | rsync -f 'merge,/- -' host:/dir /dest/use strict;use Cwd 'abs_path';my $file = '/proc/mounts';my $dir = shift || '/';$dir = abs_path($dir);$dir =~ s#([^/]*)$##;my $trailing = $1;$trailing = '' if $trailing eq '.' || !-d "$dir$trailing";$trailing .= '/' if $trailing ne '';open(IN, $file) or die "Unable to open $file: $!\n";while (<IN>) { $_ = (split)[1]; next unless s#^\Q$dir$trailing\E##o && $_ ne ''; print "- /$trailing$_\n";}close IN;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -