<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent posts to Discussion</title><link>https://sourceforge.net/p/fpart/discussion/</link><description>Recent posts to Discussion</description><atom:link href="https://sourceforge.net/p/fpart/discussion/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 24 Oct 2023 18:57:17 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/fpart/discussion/feed.rss" rel="self" type="application/rss+xml"/><item><title>fpsync parts number and intermediate runs</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/5d001d74b6/?limit=25#fc1f</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Sorry to come back with a reply so late.&lt;/p&gt;
&lt;p&gt;I increased parts number from 1000 to 10000 but it was still way faster to generate. I then moved to 100000 and it looks to suit better. In the worst case, the last part was generated just an hour before the end of the sync (half an hour on average) for a 7h to 9h job duration.&lt;/p&gt;
&lt;p&gt;Difficult to say if it was quicker and how much because it was a second pass anyway. So a big part of the time rsync took to copy files in the first pass was not spent again during the second pass.&lt;/p&gt;
&lt;p&gt;To give an overview of the jobs, they were pretty much balanced. Each job generated around 1900 parts of 100000 files, like said before lasting between 7 to 9 hours, generating around 10 Go of part files. Still using 24 parallel threads. Same volumes, each one being 8 TB.&lt;/p&gt;
&lt;p&gt;I couldn't compare a fpsync replay job versus a single rsync using a single file list. Indeed, I was able to generate lists of only modified files in the source (from the application using those data), so I ended up with an optimized list.&lt;/p&gt;
&lt;p&gt;So, finding the right settings is not easy... But the tool is very powerfull and hugely speed up such a copy process compared to regular ones (cp, mv, rsync, robocopy, ...) so the big value-added is there anyway. &lt;/p&gt;
&lt;p&gt;I have other suggestions regarding log files and jobs:&lt;br/&gt;
- It would be nice to have an option to replace the job id (run id), which looks like a timestamp, by its human-readable format YYYYDDMM-HHMMSS (or similar) or even by a custom name&lt;br/&gt;
- Having &lt;code&gt;fpsync -l&lt;/code&gt; showing as well a status to quickly identify if there were errors during the run. This may be retrieved from the last lines of &lt;code&gt;log/&amp;lt;run_id&amp;gt;/fpsync.log&lt;/code&gt; which outputs such a status?&lt;br/&gt;
- It would be great to replay only errors of a job, so the process would be even faster and optimized. As errors are all logged in &lt;code&gt;log/&amp;lt;run_id&amp;gt;/*.stderr&lt;/code&gt;, I was wondering if new lists could be generated from there&lt;/p&gt;
&lt;p&gt;What do you think about all this?&lt;/p&gt;
&lt;p&gt;Best regards.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fab11</dc:creator><pubDate>Tue, 24 Oct 2023 18:57:17 -0000</pubDate><guid>https://sourceforge.nete01180bd7ed6c0f9b8ad377e29f9afe8c140685e</guid></item><item><title>fpsync parts number and intermediate runs</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/5d001d74b6/?limit=25#dfc6</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I will try that and let you know.&lt;br/&gt;
You are welcome for the ideas :) Thanks for your consideration.&lt;/p&gt;
&lt;p&gt;Best regards.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fab11</dc:creator><pubDate>Fri, 28 Jul 2023 08:21:05 -0000</pubDate><guid>https://sourceforge.net61d03b9be0c490a8eea3ea2e2143f8f0a9a807d6</guid></item><item><title>fpsync parts number and intermediate runs</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/5d001d74b6/?limit=25#c0ca</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Many thanks for your detailed answer!&lt;/p&gt;
&lt;p&gt;You confirmed 1000 files is not enough, it's my opinion too. I realised that while looking at the &lt;em&gt;top&lt;/em&gt; command output frequently. Parts files number passed on the command line to fpsync were way ahead of the last generated one, meaning fpart was faster generating parts than rsync running them. I will maybe try to generate bigger parts for intermediate runs.&lt;/p&gt;
&lt;p&gt;Another question regarding jobs (thanks for the details on the usage). I was wondering what would be the most efficient or the fastest between a replay (which will then skip file system crawling as it already has all the generated part files) and a single rsync. The difference being passing a single file list to rsync (created with a &lt;em&gt;cat&lt;/em&gt; of all part files), as I guess fpsync will read all its parts and run as many rsync as parts.&lt;br/&gt;
Would it make sense?&lt;/p&gt;
&lt;p&gt;I would also like to ask you about log files (not only logs but everything related to a job in /tmp/fpsync by default), which turned to be really big in my case (more than 20 GB for a 8 TB job). Aside from disk space, there is also a quirk because many files are generated. For each part, I saw at least three files: the part itself, a stdoutput logfile and stderror logfile. As the last two of them are in the same directory, I ended up having directory listing issues (wait basically). As most, if not all, stderror files are empty is everything works well, they are somehow useless.&lt;br/&gt;
Would it make sense to consider adding an option to "clean" the log directory of empty files at the end of a job, or even at the end of each rsync before switching to the next one?&lt;/p&gt;
&lt;p&gt;Thanks again.&lt;/p&gt;
&lt;p&gt;Best regards.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fab11</dc:creator><pubDate>Tue, 25 Jul 2023 13:52:16 -0000</pubDate><guid>https://sourceforge.net9c48c87fdce0696886137c0259cb52853ce92cdd</guid></item><item><title>fpsync parts number and intermediate runs</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/5d001d74b6/?limit=25#450b</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Sorry for my delayed answer, I am just back from holidays :p&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;[...]&lt;/span&gt;&lt;br/&gt;
1) To not wait for big lists to be generated by fpart and start rsync right&lt;br/&gt;
away, I set fpsync to use parts of 1000 files (-f). But I realised the&lt;br/&gt;
number of parts is very huge (45,000+). I have to say data are spreaded on&lt;br/&gt;
several 8 TB volumes, processed one at a time and one after the other. The&lt;br/&gt;
server running the jobs has 48 cores and fpsync is setup to run 24 parallel&lt;br/&gt;
rsync (-n). &lt;br/&gt;
Is this a mistake? Should I use bigger parts, for instance 10,000 files&lt;br/&gt;
each, to reduce the total part number? &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, I would probably try to generate less partitions (bigger ones), but there &lt;br/&gt;
is no easy way to compute the ideal number :&lt;/p&gt;
&lt;p&gt;1) If you generate too many (small) partitions, you will loose time forking &lt;br/&gt;
very small rsync processes.&lt;/p&gt;
&lt;p&gt;2) Fpsync is able to start transfers as soon as a single partition has been &lt;br/&gt;
generated ; it generates the next ones during that transfer. If you start 24 &lt;br/&gt;
parallel rsync jobs, you probably want to generate those 24 first partitions &lt;br/&gt;
as fast as possible, so you don't want them to be too big.&lt;/p&gt;
&lt;p&gt;You have to find a good balance here. Anyway, 1000 files definitely seems to &lt;br/&gt;
small (IMHO).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2) I didn't find, in the article and on the web, information regarding the&lt;br/&gt;
intermediate synchronisations (the "middle" ones, before the final one).&lt;br/&gt;
How this should be handled? Just running the same fpsync command again?&lt;br/&gt;
Because running again existing jobs would skip the parts generation but&lt;br/&gt;
will not take care of potential new files in the source, so restart from&lt;br/&gt;
scratch seems mandatory. But it also means it will take almost as long as&lt;br/&gt;
the first pass?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, re-running fpsync the same way will take the same time as the first pass.&lt;/p&gt;
&lt;p&gt;To avoid crawling time, you can use fpsync's replay feature (-R) but, as you &lt;br/&gt;
say, it will only update known files' contents. If your files only change by &lt;br/&gt;
contents, this can be a good solution. If they are frequently deleted and &lt;br/&gt;
replaced by other ones (names are changing), that would not work as fpsync &lt;br/&gt;
would skip most of them. There is no easy solution here, the only way to get &lt;br/&gt;
new file names is to crawl the filesystem again (re-run fpsync from scratch).&lt;/p&gt;
&lt;p&gt;For the final pass, you can have a look at fpsync's option -E that makes it &lt;br/&gt;
work on a directory basis and enables --delete option, but if you have very &lt;br/&gt;
few directories it will not work very well (it will not be able to produce &lt;br/&gt;
enough partitions).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Another solution could be the retrieve all parts&lt;br/&gt;
of a job and merge them into a single or a few files to pass to rsync to&lt;br/&gt;
run a few syncs instead of so many? But again, new files won't be taken&lt;br/&gt;
into account.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That will just replay the synchronization. If that's what you want, you &lt;br/&gt;
probably want to use option -E, it will be easier to handle.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The documentation regarding jobs restart/replaying lacks&lt;br/&gt;
details and examples in my opinion.&lt;br/&gt;
How would you do?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thanks for that feedback, I'll add that to my TODO list.&lt;/p&gt;
&lt;p&gt;Here is a small example :&lt;/p&gt;
&lt;p&gt;$ fpsync -l&lt;br/&gt;
&amp;lt;=== Listing runs&lt;/p&gt;
&lt;p&gt;Nothing has been run here.&lt;/p&gt;
&lt;p&gt;$ fpsync -n 2 /usr/src/ /var/tmp/src/&lt;/p&gt;
&lt;p&gt;That commands starts a first run...&lt;/p&gt;
&lt;p&gt;$ fpsync -l&lt;br/&gt;
&amp;lt;=== Listing runs&lt;br/&gt;
===&amp;gt; Run: ID: 1690106684-1860, status: replayable (synchronization complete, &lt;br/&gt;
use -R to replay)&lt;/p&gt;
&lt;p&gt;...that becomes replayable afterwards with that command :&lt;/p&gt;
&lt;p&gt;$ fpsync -R -r 1690106684-1860&lt;/p&gt;
&lt;p&gt;You can prepare a run (i.e. &lt;em&gt;not&lt;/em&gt; run rsync commands but just generate jobs) &lt;br/&gt;
by adding -p to the initial command :&lt;/p&gt;
&lt;p&gt;$ fpsync -p -n 2 /usr/src/ /var/tmp/src/&lt;br/&gt;
1690106994 &amp;lt;=== Successfully prepared run: 1690106992-4040&lt;br/&gt;
$ fpsync -l&lt;br/&gt;
&amp;lt;=== Listing runs&lt;br/&gt;
===&amp;gt; Run: ID: 1690106684-1860, status: replayable (synchronization complete, &lt;br/&gt;
use -R to replay)&lt;br/&gt;
===&amp;gt; Run: ID: 1690106992-4040, status: resumable (synchronization not &lt;br/&gt;
complete, use -r to resume)&lt;/p&gt;
&lt;p&gt;It then becomes resumable and can be started that way :&lt;/p&gt;
&lt;p&gt;$ fpsync -r 1690106992-4040&lt;/p&gt;
&lt;p&gt;A side note : you probably want to use current fpsync's git version as a bug &lt;br/&gt;
has been fixed regarding resume/replay :&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/martymac/fpart/commit/" rel="nofollow"&gt;https://github.com/martymac/fpart/commit/&lt;/a&gt;&lt;br/&gt;
be14d1c172daca70a2502a231e75d72f9e398265&lt;/p&gt;
&lt;p&gt;Hope this helps,&lt;br/&gt;
Best regards,&lt;br/&gt;
(and thanks for your interest in fpart/fpsync !)&lt;/p&gt;
&lt;p&gt;Ganael.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ganael Laplanche</dc:creator><pubDate>Sun, 23 Jul 2023 10:37:43 -0000</pubDate><guid>https://sourceforge.net7bdd926c34f5b463cc921ac890f88a0953d36d9a</guid></item><item><title>fpsync parts number and intermediate runs</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/5d001d74b6/?limit=25#1ac0</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I have to migrate a large amount of data to a new storage array (around 100 TB), which is mostly composed of small files (max 100 KB) located into a 7 directory deep structure. The transfert to the new storage array has to be achieved through a SMB/CIFS share. So, Samba and small files, the worst case scenario...&lt;br/&gt;
Using rsync or robocopy would take ages. I discovered fpart and fpsync by accident and it turned out to be the magic solution according to my speed tests. It would let me copy these data in two weeks instead of six months.&lt;/p&gt;
&lt;p&gt;I read with lot of interest the article "Parallélisez vos transferts de fichiers" (I'm french) but I would need some advises on two subjects:&lt;/p&gt;
&lt;p&gt;1) To not wait for big lists to be generated by fpart and start rsync right away, I set fpsync to use parts of 1000 files (-f). But I realised the number of parts is very huge (45,000+). I have to say data are spreaded on several 8 TB volumes, processed one at a time and one after the other. The server running the jobs has 48 cores and fpsync is setup to run 24 parallel rsync (-n). &lt;br/&gt;
Is this a mistake? Should I use bigger parts, for instance 10,000 files each, to reduce the total part number?&lt;/p&gt;
&lt;p&gt;2) I didn't find, in the article and on the web, information regarding the intermediate synchronisations (the "middle" ones, before the final one). How this should be handled? Just running the same fpsync command again? Because running again existing jobs would skip the parts generation but will not take care of potential new files in the source, so restart from scratch seems mandatory. But it also means it will take almost as long as the first pass? In my case, files are so small I doubt rsync'ing them or not will make a change.&lt;br/&gt;
Another solution could be the retrieve all parts of a job and merge them into a single or a few files to pass to rsync to run a few syncs instead of so many? But again, new files won't be taken into account.&lt;br/&gt;
The documentation regarding jobs restart/replaying lacks details and examples in my opinion.&lt;/p&gt;
&lt;p&gt;How would you do?&lt;/p&gt;
&lt;p&gt;Thanks for your help and advise.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Fab11</dc:creator><pubDate>Wed, 19 Jul 2023 18:52:31 -0000</pubDate><guid>https://sourceforge.netf8ab0144661b395c26f778a99b218a308fedb222</guid></item><item><title>fpart and -x exclusions</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/6185e11427/?limit=25#7493</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;You're welcome. Thanks for using fpart!&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ganael Laplanche</dc:creator><pubDate>Thu, 04 Jul 2019 10:06:00 -0000</pubDate><guid>https://sourceforge.nete97d24420be5e5e3eee1b90adde74701df3643da</guid></item><item><title>fpart and -x exclusions</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/6185e11427/?limit=25#714e</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks for that Ganael.&lt;/p&gt;
&lt;p&gt;It must just be just the number of files swamping my metedata server even with the exclusions.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brett Worth</dc:creator><pubDate>Wed, 03 Jul 2019 21:49:20 -0000</pubDate><guid>https://sourceforge.net34d2ab43af4286b2fc1cda1afd59c6c9d74fe495</guid></item><item><title>fpart and -x exclusions</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/6185e11427/?limit=25#122a</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Brett,&lt;/p&gt;
&lt;p&gt;That should not be the case: when excluding a pattern, fpart sets FTS_SKIP option to avoid stat()ing useless files. See:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sourceforge.net/p/fpart/code/ci/master/tree/src/file_entry.c#l779"&gt;https://sourceforge.net/p/fpart/code/ci/master/tree/src/file_entry.c#l779&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can test that behaviour by creating a small set of files and dirs and truss (or strace) the process :&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ find .
.
./level1-dir1
./level1-dir1/level2-file2
./level1-dir1/level2-file1
./level1-dir1/level2-dir2
./level1-dir1/level2-dir1
./level1-dir1/level2-dir1/level3-file2
./level1-dir1/level2-dir1/level3-dir2
./level1-dir1/level2-dir1/level3-dir1
./level1-dir1/level2-dir1/level3-file1
./level1-dir2
./level1-file1
./level1-file2
&lt;/pre&gt;&lt;/div&gt;


&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ truss -f fpart -n &lt;span class="m"&gt;1&lt;/span&gt; -x level2-dir1 . &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep fstatat
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"."&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;drwxr-xr-x ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30429&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level1-dir1"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;drwxr-xr-x ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30435&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level1-dir2"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;drwxr-xr-x ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30436&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level1-file1"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-rw-r--r-- ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30444&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level1-file2"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-rw-r--r-- ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30445&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level2-file2"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-rw-r--r-- ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30440&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level2-file1"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-rw-r--r-- ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30439&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level2-dir2"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;drwxr-xr-x ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30438&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="m"&gt;58347&lt;/span&gt;: fstatat&lt;span class="o"&gt;(&lt;/span&gt;AT_FDCWD,&lt;span class="s2"&gt;"level2-dir1"&lt;/span&gt;,&lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;drwxr-xr-x ,inode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;30437&lt;/span&gt;,size&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;,blksize&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;131072&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,AT_SYMLINK_NOFOLLOW&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;0x0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;In the above example, you can see that nothing has been stat()ed within level2-dir1.&lt;/p&gt;
&lt;p&gt;Hope this helps,&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Ganael.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ganael Laplanche</dc:creator><pubDate>Tue, 02 Jul 2019 11:33:17 -0000</pubDate><guid>https://sourceforge.net76fd375a0416c894efe17706cbd6fe49e6f09537</guid></item><item><title>fpart and -x exclusions</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/6185e11427/?limit=25#1545</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi again. The problem I now have is that the source filesystem contain 160M files and is on a lustre version that predates DNE so there is a single metadata server.  The metadata is a real bottleneck.&lt;/p&gt;
&lt;p&gt;I have done an initial copy which took 8 days for 986TB which is fine but now that I am doing another sync it looks like it's going to take a few days for the fpart to complete.  I could reduce this by about 90% if I could just exclude a couple of directories.  The pattern limitation that you descibe above would be fine but I now suspect that even though fpart is getting a match on the directory and excluding it, it is still going down into the subtree and getting a match on a path component for everything under there.  In otherwords it will still be looking at all 160M files and excluding most of them.&lt;/p&gt;
&lt;p&gt;Am I wrong about that assumption?  It's been running for more than 32 hours now even with the names of those two directories excluded.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brett Worth</dc:creator><pubDate>Tue, 02 Jul 2019 06:32:11 -0000</pubDate><guid>https://sourceforge.neta8190dc8b2ed5156e3c0a96f8ef7bec6f85ddc5d</guid></item><item><title>fpart and -x exclusions</title><link>https://sourceforge.net/p/fpart/discussion/general/thread/6185e11427/?limit=25#2a6d</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Brett,&lt;/p&gt;
&lt;p&gt;Thanks :)&lt;/p&gt;
&lt;p&gt;Options -x/-X/-y/-Y only matches files or directory names, not their path (like find's option -name).&lt;/p&gt;
&lt;p&gt;Regards,&lt;br/&gt;
Ganael.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ganael Laplanche</dc:creator><pubDate>Mon, 01 Jul 2019 10:07:49 -0000</pubDate><guid>https://sourceforge.netd486789b217da74f767c655494fd0ff8657d95c1</guid></item></channel></rss>