Fazê-lo a partir da linha de comando provavelmente não será uma opção se você quiser contabilizar os arquivos com check-out.
Isso significa que você terá que recorrer ao uso da API do SharePoint para despejar os arquivos. Existe um projeto codeplex chamado SPIEFolder que irá te aproximar. Está faltando 2 características que você precisa, mas se você tem alguma experiência de codificação .Net (ou conhece alguém com tal), deve ser uma mudança bastante simples. As duas limitações na sua situação são:
- despeja os arquivos usando a mesma estrutura de pastas que a biblioteca original
- despeja tudo (incluindo itens com check-out), então você precisa adicionar um cheque para isso
Outra vantagem é que, se a lista / itens forem grandes, deve ser muito mais rápido fazer isso usando a API.