This directory contains shell scripts which provided the original
replication & backup functionality dating back to Solr 1.1.  These
scripts only work on systems that support removing open hard links and
were superseded by the ReplicationHandler in Solr 1.4.

These scripts are no longer actively maintained, improved, or tested,
but they have been left in the source tree for use by legacy users who
are satisfied with their basic functionality. 

For more information on how these scripts can be used, please consult
the wiki... 

https://wiki.apache.org/solr/CollectionDistribution
