mirror of https://github.com/octoleo/lsyncd.git
use missing-args for rsyncssh too
This commit is contained in:
parent
0a0fef20ac
commit
d1ef5f3d51
|
@ -139,27 +139,6 @@ local replaceRsyncFilter =
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Mutates paths for rsync filter rules,
|
|
||||||
-- changes deletes to multi path patterns
|
|
||||||
--
|
|
||||||
-- local pathMutator =
|
|
||||||
-- function
|
|
||||||
--(
|
|
||||||
-- etype,
|
|
||||||
-- path1,
|
|
||||||
-- path2
|
|
||||||
--)
|
|
||||||
-- if string.byte( path1, -1 ) == 47
|
|
||||||
-- and etype == 'Delete'
|
|
||||||
-- then
|
|
||||||
-- return replaceRsyncFilter( path1 ) .. '***', replaceRsyncFilter( path2 )
|
|
||||||
-- else
|
|
||||||
-- return replaceRsyncFilter( path1 ), replaceRsyncFilter( path2 )
|
|
||||||
-- end
|
|
||||||
--end
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Spawns rsync for a list of events
|
-- Spawns rsync for a list of events
|
||||||
--
|
--
|
||||||
|
|
|
@ -105,28 +105,6 @@ local replaceRsyncFilter =
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Mutates paths for rsync filter rules,
|
|
||||||
-- changes deletes to multi path patterns
|
|
||||||
--
|
|
||||||
local pathMutator =
|
|
||||||
function
|
|
||||||
(
|
|
||||||
etype,
|
|
||||||
path1,
|
|
||||||
path2
|
|
||||||
)
|
|
||||||
if string.byte( path1, -1 ) == 47
|
|
||||||
and etype == 'Delete'
|
|
||||||
then
|
|
||||||
return replaceRsyncFilter( path1 ) .. '***', replaceRsyncFilter( path2 )
|
|
||||||
else
|
|
||||||
return replaceRsyncFilter( path1 ), replaceRsyncFilter( path2 )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Spawns rsync for a list of events
|
-- Spawns rsync for a list of events
|
||||||
--
|
--
|
||||||
|
@ -177,59 +155,12 @@ rsyncssh.action = function
|
||||||
|
|
||||||
-- gets the list of paths for the event list
|
-- gets the list of paths for the event list
|
||||||
-- deletes create multi match patterns
|
-- deletes create multi match patterns
|
||||||
local paths = elist.getPaths( pathMutator )
|
local paths = elist.getPaths( )
|
||||||
|
|
||||||
-- stores all filters by integer index
|
|
||||||
local filterI = { }
|
|
||||||
|
|
||||||
-- stores all filters with path index
|
|
||||||
local filterP = { }
|
|
||||||
|
|
||||||
-- adds one path to the filter
|
|
||||||
local function addToFilter
|
|
||||||
(
|
|
||||||
path
|
|
||||||
)
|
|
||||||
if filterP[ path ]
|
|
||||||
then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
filterP[ path ] = true
|
|
||||||
|
|
||||||
table.insert( filterI, path )
|
|
||||||
end
|
|
||||||
|
|
||||||
-- adds a path to the filter.
|
|
||||||
--
|
|
||||||
-- rsync needs to have entries for all steps in the path,
|
|
||||||
-- so the file for example d1/d2/d3/f1 needs following filters:
|
|
||||||
-- 'd1/', 'd1/d2/', 'd1/d2/d3/' and 'd1/d2/d3/f1'
|
|
||||||
for _, path in ipairs( paths )
|
|
||||||
do
|
|
||||||
if path and path ~= ''
|
|
||||||
then
|
|
||||||
addToFilter( path )
|
|
||||||
|
|
||||||
local pp = string.match( path, '^(.*/)[^/]+/?' )
|
|
||||||
|
|
||||||
while pp
|
|
||||||
do
|
|
||||||
addToFilter( pp )
|
|
||||||
|
|
||||||
pp = string.match( pp, '^(.*/)[^/]+/?' )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local filterS = table.concat( filterI, '\n' )
|
|
||||||
|
|
||||||
local filter0 = table.concat( filterI, '\000' )
|
|
||||||
|
|
||||||
log(
|
log(
|
||||||
'Normal',
|
'Normal',
|
||||||
'Rsyncing list\n',
|
'Rsyncing list\n',
|
||||||
filterS
|
table.concat( paths, '\n' )
|
||||||
)
|
)
|
||||||
|
|
||||||
local delete = nil
|
local delete = nil
|
||||||
|
@ -237,20 +168,19 @@ rsyncssh.action = function
|
||||||
if config.delete == true
|
if config.delete == true
|
||||||
or config.delete == 'running'
|
or config.delete == 'running'
|
||||||
then
|
then
|
||||||
delete = { '--delete', '--ignore-errors' }
|
delete = { '--delete-missing-args', '--ignore-errors' }
|
||||||
end
|
end
|
||||||
|
|
||||||
spawn(
|
spawn(
|
||||||
elist,
|
elist,
|
||||||
config.rsync.binary,
|
config.rsync.binary,
|
||||||
'<', filter0,
|
'<', table.concat( filterI, '\000' ),
|
||||||
config.rsync._computed,
|
config.rsync._computed,
|
||||||
'-r',
|
'-r',
|
||||||
delete,
|
delete,
|
||||||
'--force',
|
'--force',
|
||||||
'--from0',
|
'--from0',
|
||||||
'--include-from=-',
|
'--files-from=-',
|
||||||
'--exclude=*',
|
|
||||||
config.source,
|
config.source,
|
||||||
config.host .. ':' .. config.targetdir
|
config.host .. ':' .. config.targetdir
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue