Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
b33b791e
Commit
b33b791e
authored
Feb 22, 1999
by
David Dykstra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add --delete-excluded option to delete files on the receiving side that
are excluded. Implies --delete.
parent
17d31b38
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
37 additions
and
16 deletions
+37
-16
README
README
+1
-0
flist.c
flist.c
+6
-4
main.c
main.c
+4
-2
options.c
options.c
+15
-4
rsync.yo
rsync.yo
+11
-6
No files found.
README
View file @
b33b791e
...
...
@@ -61,6 +61,7 @@ Options
--rsync-path=PATH specify path to rsync on the remote machine
-C, --cvs-exclude auto ignore files in the same way CVS does
--delete delete files that don't exist on the sending side
--delete-excluded also delete excluded files on the receiving side
--partial keep partially transferred files
--force force deletion of directories even if not empty
--numeric-ids don't map uid/gid values by user/group name
...
...
flist.c
View file @
b33b791e
...
...
@@ -395,7 +395,7 @@ static int skip_filesystem(char *fname, STRUCT_STAT *st)
return
(
st2
.
st_dev
!=
filesystem_dev
);
}
static
struct
file_struct
*
make_file
(
char
*
fname
)
static
struct
file_struct
*
make_file
(
int
f
,
char
*
fname
)
{
struct
file_struct
*
file
;
STRUCT_STAT
st
;
...
...
@@ -403,6 +403,7 @@ static struct file_struct *make_file(char *fname)
char
*
p
;
char
cleaned_name
[
MAXPATHLEN
];
char
linkbuf
[
MAXPATHLEN
];
extern
int
delete_excluded
;
strlcpy
(
cleaned_name
,
fname
,
MAXPATHLEN
);
cleaned_name
[
MAXPATHLEN
-
1
]
=
0
;
...
...
@@ -428,11 +429,12 @@ static struct file_struct *make_file(char *fname)
return
NULL
;
}
if
(
!
match_file_name
(
fname
,
&
st
))
/* f is set to -1 when calculating deletion file list */
if
(((
f
!=
-
1
)
||
!
delete_excluded
)
&&
!
match_file_name
(
fname
,
&
st
))
return
NULL
;
if
(
verbose
>
2
)
rprintf
(
FINFO
,
"make_file(%
s)
\n
"
,
fname
);
rprintf
(
FINFO
,
"make_file(%
d,%s)
\n
"
,
f
,
fname
);
file
=
(
struct
file_struct
*
)
malloc
(
sizeof
(
*
file
));
if
(
!
file
)
out_of_memory
(
"make_file"
);
...
...
@@ -509,7 +511,7 @@ void send_file_name(int f,struct file_list *flist,char *fname,
{
struct
file_struct
*
file
;
file
=
make_file
(
fname
);
file
=
make_file
(
f
,
f
name
);
if
(
!
file
)
return
;
...
...
main.c
View file @
b33b791e
...
...
@@ -335,6 +335,7 @@ static void do_server_recv(int f_in, int f_out, int argc,char *argv[])
char
*
local_name
=
NULL
;
char
*
dir
=
NULL
;
extern
int
delete_mode
;
extern
int
delete_excluded
;
extern
int
am_daemon
;
if
(
verbose
>
2
)
...
...
@@ -351,7 +352,7 @@ static void do_server_recv(int f_in, int f_out, int argc,char *argv[])
}
}
if
(
delete_mode
)
if
(
delete_mode
&&
!
delete_excluded
)
recv_exclude_list
(
f_in
);
flist
=
recv_file_list
(
f_in
);
...
...
@@ -408,9 +409,10 @@ int client_run(int f_in, int f_out, int pid, int argc, char *argv[])
if
(
am_sender
)
{
extern
int
cvs_exclude
;
extern
int
delete_mode
;
extern
int
delete_excluded
;
if
(
cvs_exclude
)
add_cvs_excludes
();
if
(
delete_mode
)
if
(
delete_mode
&&
!
delete_excluded
)
send_exclude_list
(
f_out
);
flist
=
send_file_list
(
f_out
,
argc
,
argv
);
if
(
verbose
>
3
)
...
...
options.c
View file @
b33b791e
...
...
@@ -37,6 +37,7 @@ int dry_run=0;
int
local_server
=
0
;
int
ignore_times
=
0
;
int
delete_mode
=
0
;
int
delete_excluded
=
0
;
int
one_file_system
=
0
;
int
remote_version
=
0
;
int
sparse_files
=
0
;
...
...
@@ -123,6 +124,7 @@ void usage(int F)
rprintf
(
F
,
" --rsync-path=PATH specify path to rsync on the remote machine
\n
"
);
rprintf
(
F
,
" -C, --cvs-exclude auto ignore files in the same way CVS does
\n
"
);
rprintf
(
F
,
" --delete delete files that don't exist on the sending side
\n
"
);
rprintf
(
F
,
" --delete-excluded also delete excluded files on the receiving side
\n
"
);
rprintf
(
F
,
" --partial keep partially transferred files
\n
"
);
rprintf
(
F
,
" --force force deletion of directories even if not empty
\n
"
);
rprintf
(
F
,
" --numeric-ids don't map uid/gid values by user/group name
\n
"
);
...
...
@@ -152,9 +154,9 @@ void usage(int F)
rprintf
(
F
,
"See http://rsync.samba.org/ for updates and bug reports
\n
"
);
}
enum
{
OPT_VERSION
,
OPT_SUFFIX
,
OPT_SENDER
,
OPT_SERVER
,
OPT_EXCLUDE
,
OPT_EXCLUDE_FROM
,
OPT_DELETE
,
OPT_NUMERIC_IDS
,
OPT_RSYNC_PATH
,
OPT_
FORCE
,
OPT_TIMEOUT
,
OPT_DAEMON
,
OPT_CONFIG
,
OPT_PORT
,
enum
{
OPT_VERSION
,
OPT_SUFFIX
,
OPT_SENDER
,
OPT_SERVER
,
OPT_EXCLUDE
,
OPT_EXCLUDE_FROM
,
OPT_DELETE
,
OPT_DELETE_EXCLUDED
,
OPT_NUMERIC_IDS
,
OPT_
RSYNC_PATH
,
OPT_FORCE
,
OPT_TIMEOUT
,
OPT_DAEMON
,
OPT_CONFIG
,
OPT_PORT
,
OPT_INCLUDE
,
OPT_INCLUDE_FROM
,
OPT_STATS
,
OPT_PARTIAL
,
OPT_PROGRESS
,
OPT_COPY_UNSAFE_LINKS
,
OPT_SAFE_LINKS
,
OPT_COMPARE_DEST
,
OPT_LOG_FORMAT
,
OPT_PASSWORD_FILE
,
OPT_SIZE_ONLY
};
...
...
@@ -166,6 +168,7 @@ static struct option long_options[] = {
{
"server"
,
0
,
0
,
OPT_SERVER
},
{
"sender"
,
0
,
0
,
OPT_SENDER
},
{
"delete"
,
0
,
0
,
OPT_DELETE
},
{
"delete-excluded"
,
0
,
0
,
OPT_DELETE_EXCLUDED
},
{
"force"
,
0
,
0
,
OPT_FORCE
},
{
"numeric-ids"
,
0
,
0
,
OPT_NUMERIC_IDS
},
{
"exclude"
,
1
,
0
,
OPT_EXCLUDE
},
...
...
@@ -309,6 +312,11 @@ int parse_arguments(int argc, char *argv[], int frommain)
delete_mode
=
1
;
break
;
case
OPT_DELETE_EXCLUDED
:
delete_excluded
=
1
;
delete_mode
=
1
;
break
;
case
OPT_FORCE
:
force_delete
=
1
;
break
;
...
...
@@ -591,9 +599,12 @@ void server_options(char **args,int *argc)
args
[
ac
++
]
=
backup_suffix
;
}
if
(
delete_mode
)
if
(
delete_mode
&&
!
delete_excluded
)
args
[
ac
++
]
=
"--delete"
;
if
(
delete_excluded
)
args
[
ac
++
]
=
"--delete-excluded"
;
if
(
size_only
)
args
[
ac
++
]
=
"--size-only"
;
...
...
rsync.yo
View file @
b33b791e
mailto(rsync-bugs@samba.org)
manpage(rsync)(1)(
18
Feb 1999)()()
manpage(rsync)(1)(
22
Feb 1999)()()
manpagename(rsync)(faster, flexible replacement for rcp)
manpagesynopsis()
...
...
@@ -250,6 +250,7 @@ Options
--rsync-path=PATH specify path to rsync on the remote machine
-C, --cvs-exclude auto ignore files in the same way CVS does
--delete delete files that don't exist on the sending side
--delete-excluded also delete excluded files on the receiving side
--partial keep partially transferred files
--force force deletion of directories even if not empty
--numeric-ids don't map uid/gid values by user/group name
...
...
@@ -430,12 +431,12 @@ boundaries when recursing. This is useful for transferring the
contents of only one filesystem.
dit(bf(--delete)) This tells rsync to delete any files on the receiving
side that aren't on the sending side.
This option can be dangerous if
used incorrectly!
side that aren't on the sending side.
Files that are excluded from
transfer are excluded from being deleted unless you use --delete-excluded.
It is a very good idea to run first using the dry run option (-n) to
see what files would be deleted to make sure important files aren't
listed.
This option can be dangerous if used incorrectly! It is a very good idea
to run first using the dry run option (-n) to see what files would be
deleted to make sure important files aren't
listed.
rsync 1.6.4 changed the behavior of --delete to make it less
dangerous. rsync now only scans directories on the receiving side
...
...
@@ -452,6 +453,10 @@ prevent temporary filesystem failures (such as NFS errors) on the
sending side causing a massive deletion of files on the
destination.
dit(bf(--delete-excluded)) In addition to deleting the files on the
receiving side that are not on the sending side, this tells rsync to also
delete any files on the receiving side that are excluded (see --exclude).
dit(bf(--force)) This options tells rsync to delete directories even if
they are not empty. This applies to both the --delete option and to
cases where rsync tries to copy a normal file but the destination
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment